我的文件夹中有多个以日期为文件名的 csv 文件(20080101.csv 到 20111031.csv)。 csv 文件具有共同的标题。 csv 文件如下所示:
20080101.csv
X ;Y; Z
1 ; 1 ; 3
1 ; 2 ; 6
1 ; 3 ; 24
2 ; 1 ; 24
2 ; 2 ; 24
20080102.csv
X ;Y; Z
1 ; 1 ; 0.1
1 ; 2 ; 2
1 ; 3 ; 67
2 ; 1 ; 24
2 ; 2 ; 24
20080103.csv
X ;Y; Z
1 ; 1 ; 3
1 ; 3 ; 24
2 ; 1 ; 24
2 ; 2 ; 24
20080104.csv
X ;Y; Z
1 ; 1 ; 34
1 ; 2 ; 23
1 ; 3 ; 67
2 ; 1 ; 24
2 ; 2 ; 24
… 等等。我想编写一个读取行的脚本,如果在给定行中我们有 X=1 和 Y=2,则整行将与文件名一起复制到新的 csv 文件中,提供以下输出:
X ;Y ; Z ; filename
1 ; 2 ; 6 ; 20080101
1 ; 2 ; 2 ; 20080102
1 ; 2 ; NA; 20080103
1 ; 2 ; 23; 20080104
任何想法如何做到这一点以及我应该研究的模块的任何建议或任何示例。
感谢您的时间和帮助。
干杯,
纳文
这是一个结构良好的问题,逻辑应该是显而易见的。对于某人来说,提供完成的代码将违背任务的目的。首先,在问题中添加“作业”标签,然后思考你想做什么:
1)循环文件(在打开时跟踪每个文件名)
2)从当前文件中读取行
3) 如果满足选择标准(x==1 且 y==2),则写入该行。
要开始使用,请尝试:
import csv, os
for fn in os.listdir():
if ".csv" in fn:
with open(fn, 'r', newline='') as f:
reader = csv.reader(f, delimiter=";")
for row in reader:
...
然后扩展解决方案以打开输出文件并使用 csv.writer 写入选定的行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)