我正在修改具有两个字段名的 CSV 文件,并且我想在附加字段名下的每行末尾添加一个字符串。我已经弄清楚如何添加字段名称,但不知道如何向其中添加内容。看起来应该很简单,但我很难过。
import csv
with open('test2l.csv', 'r') as inny:
reader = csv.DictReader(inny)
with open('outfile.csv', 'w') as outty:
fieldnames = ["Genus", "Species", "Source"]
writer = csv.DictWriter(outty, fieldnames = fieldnames)
writer.writeheader()
for record in reader:
g = record['Genus']
s = record['Species']
我尝试的所有操作都只是将字符串添加到“Species”中的现有字符串中,但我无法为“Source”创建记录,我猜是因为它是空的。
谢谢!
最佳答案
如果您还没有查看 csv.Reader、csv.DictReader 和 csv.DictWriter 的文档,请查看该文档。
文档表明读取器对象使用迭代器协议(protocol)对 on 对象进行操作。迭代一次(例如,对于 reader: 中的行)添加“Source”会耗尽底层迭代器。稍后尝试使用同一个读取器和写入器是行不通的。
要解决此问题,您可以创建一个列表:
rows = list(csv.DictReader(inny))
虽然这会耗尽迭代器,但您现在有一个可以使用的列表。但是,如果列表很长,这可能并不理想。
另一个解决方案是在同一迭代期间添加源并写入行:
for row in reader:
row['Source'] = 'same string every time'
writer.writerow(row)
关于Python:将相同的字符串添加到每行的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359066/