python通过DictReader实现两个csv文件的映射查找lookup之代码详解
Posted ShenLiang2025
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 30
2 有字段对应解释数据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_rows
new_rows.append({empcomdic.get('label'):dval})
return new_rows
if __name__ == '__main__':
print(collookup())
结果
以上是关于python通过DictReader实现两个csv文件的映射查找lookup之代码详解的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中使用 csv.DictReader 进行数据类型转换的最快方法
带有 UTF-8 数据的 Python CSV DictReader
python Python:csv.DictReader(csvfile),for循环