擅长:python、mysql、java
<p>使用<code>row[1]</code>意味着每个状态保留一个条目。在</p>
<p>您应该在<code>(row[0], row[1])</code>上进行测试(城市/州的组合,以避免混淆,例如德克萨斯州里士满和弗吉尼亚州里士满)。在</p>
<pre><code>import csv
IN_FILE = 'originalcities.csv'
OUT_FILE = 'output_cities.csv'
def main():
with open(IN_FILE, 'rb') as inf, open(OUT_FILE, 'wb') as outf:
incsv, outcsv = csv.reader(inf), csv.writer(outf)
# read data and de-duplicate by city and state
citystates = set()
for row in incsv:
citystate = tuple(row[0:2])
if citystate not in citystates:
outcsv.writeline(row)
citystates.add(citystate)
if __name__=="__main__":
main()
</code></pre>
<p>**编辑:**</p>
<p>根据@Fernando的建议,这里有一个不需要集合的版本,它只是比较连续的行(这要求输入数据已经按排序的顺序排列,或者至少每个城市/州组合的所有出现都在一起)。在</p>
^{pr2}$