所以我有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:
^{pr2}$我想删除多余的名字。城市和国家是什么并不重要,因为我只需要将名称写入输出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'
我知道我正在创建的列表有问题,但是我不知道它是否真的比较两列的小写字母并打印匹配项,因为我想先验证它。在
试试这个:
然后,您可以简单地将
filtered
的内容写入文件。在似乎没有必要导入csv,因为您可以通过在逗号上拆分来轻松提取信息。另外,最好添加一个检查,这样“Name”就不会被认为是有效的名称。在
我不知道这是否是一个要求,但是假设您需要使用第三个文件进行过滤,我更喜欢定义一个函数,我们可以用参数调用它来立即构建一个未升级的列表。在
一方面
应该是:
^{pr2}$这就是导致错误的原因
编辑
要解决注释中提到的KeyError:
您也可以通过变量v(代表dict中每个值的代表)进行比较,但是为了清楚地了解该功能,我使用了按键访问索引。在
相关问题 更多 >
编程相关推荐