當(dāng)前位置:
首頁 >
python通过DictReader实现两个csv文件的映射查找lookup之代码详解
發(fā)布時(shí)間:2024/9/27
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
python通过DictReader实现两个csv文件的映射查找lookup之代码详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
python里應(yīng)用DictReader的實(shí)現(xiàn)匹配查找
需求簡介
通過應(yīng)用DictReader讀取csv文件,實(shí)現(xiàn)通過一個(gè)CSV在另外個(gè)CSV里找到對應(yīng)的解釋,類似lookup。
數(shù)據(jù)內(nèi)容
1 這里假定有員工數(shù)據(jù)emp.csv,但不知道字段的解釋,數(shù)據(jù)內(nèi)容見下: 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 有字段對應(yīng)解釋數(shù)據(jù)empcom.csv,內(nèi)容見下: name??? label EMPNO?? 雇員的編號(hào),由四位數(shù)字所組成 ENAME?? 雇員的姓名,由10位字符所組成 JOB 雇員的職位 MGR 雇員對應(yīng)的領(lǐng)導(dǎo)編號(hào),領(lǐng)導(dǎo)也是雇員 HIREDATE??? 雇員的雇傭日期 SAL 基本工資,其中有兩位小數(shù),五倍整數(shù),一共是七位 COMM??? 獎(jiǎng)金,傭金 DEPTNO? 雇員所在的部門編號(hào)需要得到emp.csv里每個(gè)記錄和empcom.csv里的解釋創(chuàng)新組成鍵值對。
代碼解釋
from csv import DictReader def collookup():#通過DicReader加載emp.csv,此時(shí)EMPNO、ENAME、JOB都是鍵(key),"7369 SMITH"是值(value)empfile=DictReader(open('./data/emp.csv','rt',encoding='utf8'),delimiter='\t')##通過DicReader加載empcom.csv,此時(shí)name、label都是鍵(key),"EMPNO 雇員的編號(hào),由四位數(shù)字所組成"都是值(value)empcomfile=DictReader(open('./data/empcom.csv','rt',encoding='utf8'),delimiter='\t')empcomdata = [d for d in empcomfile]new_rows=[]#通過enumerate遍歷方便控制文件的行數(shù),當(dāng)前示例僅讀取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的值時(shí)的判斷if dkey in empcomdic.values():#將empcomdic里的值和empdic里的值合成新的dic并追加到new_rowsnew_rows.append({empcomdic.get('label'):dval})return new_rowsif __name__ == '__main__':print(collookup())結(jié)果
總結(jié)
以上是生活随笔為你收集整理的python通过DictReader实现两个csv文件的映射查找lookup之代码详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钱站是哪里的公司
- 下一篇: Apache Superset从入门到放