我有一个大的csv文件,格式如下:
CSV文件1
id, person, city
1, John, NY
2, Lucy, Miami
3, Smith, Los Angeles
4, Mike, Chicago
5, David, Los Angeles
6, Daniel, NY
Run Code Online (Sandbox Code Playgroud)
在另一个CSV文件中,每个城市都有一个数字代码:
CSV文件2
city , code
NY , 100
Miami, 101
Los Angeles, 102
Chicago, 103
Run Code Online (Sandbox Code Playgroud)
我需要做的是通过城市列中的CSV文件1,读取城市的名称,并从CSV文件2获取该城市的数字代码.然后,我可以将城市代码列表输出到文本文件.对于这个例子,我会得到这个结果:
100
101
102
103
102
100
Run Code Online (Sandbox Code Playgroud)
我使用csv.DictReader为每个文件创建字典,但我试图找到一种方法将每个城市映射到每个代码.
任何想法或指示正确的方向将不胜感激!
你有一些额外的空格,与一些存储格式不同,CSV确实关心它.如果它实际上在您的源数据中,您可能必须在它按预期处理之前将其删除(否则各个字段将具有前导和尾随空格).
然而,假设空白消失了,那么它就相当简单了.您可以根据第二个文件的内容创建一个将名称映射到代码的字典.
from csv import DictReader
city_codes = {}
for row in DictReader(open('file2.csv', 'rb')):
city_codes[row['city']] = row['code']
for row in DictReader(open('file1.csv', 'rb')):
print city_codes[row['city']]
Run Code Online (Sandbox Code Playgroud)
当然,您可以根据需要将其发送到文本文件,只需像往常一样重定向打印输出即可.