python通过DictReader实现两个csv文件的映射查找lookup之代码详解
生活随笔
收集整理的這篇文章主要介紹了
python通过DictReader实现两个csv文件的映射查找lookup之代码详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python里應用DictReader的實現匹配查找
需求簡介
通過應用DictReader讀取csv文件,實現通過一個CSV在另外個CSV里找到對應的解釋,類似lookup。
數據內容
1 這里假定有員工數據emp.csv,但不知道字段的解釋,數據內容見下: EMPNO?? ?ENAME?? ?JOB?? ?MGR?? ?HIREDATE?? ?SAL?? ?COMM?? ?DEPTNO 7369?? ?SMITH?? ?CLERK?? ?7902?? ?1980-12-27?? ?800?? ??? ?20 7499?? ?ALLEN?? ?SALESMAN?? ?7698?? ?1981-2-20?? ?1600?? ?300?? ?302 有字段對應解釋數據empcom.csv,內容見下: name??? label EMPNO?? 雇員的編號,由四位數字所組成 ENAME?? 雇員的姓名,由10位字符所組成 JOB 雇員的職位 MGR 雇員對應的領導編號,領導也是雇員 HIREDATE??? 雇員的雇傭日期 SAL 基本工資,其中有兩位小數,五倍整數,一共是七位 COMM??? 獎金,傭金 DEPTNO? 雇員所在的部門編號需要得到emp.csv里每個記錄和empcom.csv里的解釋創新組成鍵值對。
代碼解釋
from csv import DictReader def collookup():#通過DicReader加載emp.csv,此時EMPNO、ENAME、JOB都是鍵(key),"7369 SMITH"是值(value)empfile=DictReader(open('./data/emp.csv','rt',encoding='utf8'),delimiter='\t')##通過DicReader加載empcom.csv,此時name、label都是鍵(key),"EMPNO 雇員的編號,由四位數字所組成"都是值(value)empcomfile=DictReader(open('./data/empcom.csv','rt',encoding='utf8'),delimiter='\t')empcomdata = [d for d in empcomfile]new_rows=[]#通過enumerate遍歷方便控制文件的行數,當前示例僅讀取emp.csv里的第一行for num,empdic in enumerate(empfile):if num == 0:#對每一行遍歷分別保留到鍵dkey和值dval里for dkey,dval in empdic.items():for empcomdic in empcomdata:#如果emp.csv里的鍵存在于empcomdic的值時的判斷if dkey in empcomdic.values():#將empcomdic里的值和empdic里的值合成新的dic并追加到new_rowsnew_rows.append({empcomdic.get('label'):dval})return new_rowsif __name__ == '__main__':print(collookup())結果
總結
以上是生活随笔為你收集整理的python通过DictReader实现两个csv文件的映射查找lookup之代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钱站是哪里的公司
- 下一篇: 坦克动力装置的主要竞争对手