我有一个逗号分隔的CSV文件的城市,州,邮编和州缩写。不同的cites文件中有重复的邮政编码。我的输出只需要列出一个城市和一个邮政编码,而不是一个城市的名称和所有不同的邮政编码。在
以下是我在数据中的数据(csv文件中有26k行)
Phoenix, Arizona, 87654, AZ
Phoenix, Arizona, 87655, AZ
Tuscon, Arizona, 98754, AZ
Tuscon, Arizona, 98755, AZ
Tuscon, Arizona, 98756, AZ
我需要的是删除重复的城市行,只保留一行。所以我的输出应该是这样的。在
^{pr2}$这是我现在的代码,它不起作用。在
import os, sys, csv
f1 = csv.reader(open('originalcities.csv', 'rb'))
writer = csv.writer(open("output_cities.csv", "wb"))
city = set()
for row in f1:
if row[1] not in city:
write.writerow(row)
city.add( row[1] )
我不确定代码是否对我来说是正确的,以获得我正在寻找的输出。当我运行这个代码时,我得到了这个错误。在
for row in f1:
_csv.Error: iterator should return strings, not bytes (did you open the file in
text mode?)
非常感谢任何帮助。谢谢您。在
使用
set
删除重复项怎么样?在在输出.txt
^{pr2}$使用
row[1]
意味着每个状态保留一个条目。在您应该在
(row[0], row[1])
上进行测试(城市/州的组合,以避免混淆,例如德克萨斯州里士满和弗吉尼亚州里士满)。在**编辑:**
根据@Fernando的建议,这里有一个不需要集合的版本,它只是比较连续的行(这要求输入数据已经按排序的顺序排列,或者至少每个城市/州组合的所有出现都在一起)。在
^{pr2}$相关问题 更多 >
编程相关推荐