【发布时间】:2019-03-01 03:49:34
【问题描述】:
import csv
with open("somecities.csv") as f:
reader = csv.DictReader(f)
data = [r for r in reader]
somecities.csv 的内容:
Country,Capital,CountryPop,AreaSqKm
Canada,Ottawa,35151728,9984670
USA,Washington DC,323127513,9833520
Japan,Tokyo,126740000,377972
Luxembourg,Luxembourg City,576249,2586
python 新手,我正在尝试读取并附加一个 csv 文件。我花了一些时间尝试对类似问题的一些回答,但没有运气——这就是为什么我认为上面的代码毫无用处。
我本质上想要实现的是使用字典将 CSV 中的每一行存储在内存中,国家名称作为键,值是包含表中其他信息的元组,按照它们在CSV 文件。
从那里我尝试将另外三个城市添加到 csv(国家、首都、CountryPop、AreaSqKm)并查看更新的 csv。我应该如何去做这一切?
对更新后的 csv 的期望添加是:
巴西,巴西利亚,211224219, 8358140
中国,北京,1403500365, 9388211
比利时,布鲁塞尔,11250000, 30528
编辑:
Import csv
with open("somecities.csv", "r") as csvinput:
with open(" somecities_update.csv", "w") as csvresult:
writer = csv.writer(csvresult, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
headers = next(reader)
for row in reader:
all.append(row)
# Now we write to the new file
writer.write(headers)
for record in all:
writer.write(record)
#row.append(Brazil, Brasília, 211224219, 8358140)
#row.append(China, Beijing, 1403500365, 9388211)
#row.append(Belgium, Brussels, 11250000, 30528)
【问题讨论】:
-
您可以探索最适合的python pandas。
-
您没有使用 pandas 数据框有什么原因吗?如果你这样做,我可能会这样做。再说一次,也许有理由不这样做?
-
data = {r[0]: tuple(r[1:]) for r in reader}?还是我误解了?您不需要为此使用DictReader,您需要常规的csv.reader() -
@roganjosh 我已经按照你的建议做了,但我现在遇到了 AttributeError: module 'csv' has no attribute 'reader'。
-
你能添加想要的输出吗?
标签: python csv dictionary append tuples