所以我有CSV1:
Name, City, Country
David, Los Angeles, US
Peter, Chicago, US
Mark, Chicago, US
Brian, New York, US
Paul, Los Angeles, US
Andy, Boston, US
Chris, Dallas, US 和CSV2:
City, Name, Country
PETER, Chicago, US
Adam, Florida, US
MARK, Chicago, US
James, Austin, US
BRIAN, New York, US 我想删除多余的名字。城市和国家是什么并不重要,因为我只需要将名称写到输出csv文件中。因此,在这种情况下,对于BRIAN和brian,它将删除冗余数据,只接受一个名字(brian)。同时,我还希望将CSV1格式但不是CSV2格式的数据(‘Name’)打印到输出文件中。因此,基本上,它是一个不区分大小写的过滤器。如下所示:
Name:
David
Peter
Mark
Brian
Paul
Andy
Chris 我已经尝试过以下代码:
import csv
# load second file as lookup table
data2 = {}
data1 = {}
with open('CSV2.csv', 'r') as csvinput:
reader = csv.reader(csvinput)
for row in csvinput:
data2[row[1]] = row
# now process first file against it
with open("CSV1.csv", 'r') as lookuplist:
reader1 = csv.reader(lookuplist)
for col in lookuplist:
data1[col[0]] = col
if col[0] not in data2:
print(col[0])
if col.lower()[0] == data2.lower()[1]:
print('Matches')这是我得到的错误:
AttributeError: 'dict' object has no attribute 'lower'我知道我创建的列表有问题,但我不能确定它是否真的是比较两列的小写并打印匹配,因为我想先验证它。
发布于 2018-06-08 04:57:51
试试这个:
csv1names = [(line.split()[0]).title() for line in csv1file]
csv2names = [(line.split()[0]).title() for line in csv2file]
filtered = [name if name not in csv2names for name in csv1names]然后,您可以简单地将filtered的内容写入您的文件。
https://stackoverflow.com/questions/50749955
复制相似问题