【发布时间】:2017-08-08 19:45:04
【问题描述】:
这似乎是一个简单的问题,但我现在无法弄清楚。我有以下 CSV 文件:
Version,4
Name,Jon
Address,Somewhere
Date,09-16-2016
Worked,Yes
Done,No
Description,Something
我想检查此 CSV 是否包含 A 列中的多个字段并包含 B 列中的相关值。
我的代码如下所示:
import csv
f = csv.reader(open(file.csv))
fields = ['Name','Address','Date']
现在如果我找到一个字段和/或相关值,我想做一些特定的逻辑,例如:
for r in f:
if r[0] in fields:
print(r[0]+" is present in the file.csv file")
if r[1]:
print("Value related to "+r[0]+" is in the file.csv file")
if r[0] == 'Date':
if type(datetime.datetime.strptime(r[1], '%m-%d-%Y')) == datetime.datetime:
print(r[0]+" value is correctly formatted")
else:
print(r[0]+" value is not correctly formatted (MM-DD-YYYY)")
break
else:
print("Value related to "+r[0]+" is not filled in, in the file.csv file")
break
这可行,但我现在如何检查 fields 列表中的任何字符串是否不在此循环的 CSV 中?也欢迎任何其他评论。
【问题讨论】:
-
如果你为
if r[0] in fields:语句添加else部分并处理它,那么你面临的问题是什么? -
@paul_dg 是
pandas的选项吗? -
@Haranadh 这将返回 r[0] 中不在字段中的所有值。我想检索不在 CSV 中的字段中的哪些值。
-
@Meitham 使用标准库的解决方案目前更适合我的情况。