Python:将相同的字符串添加到每行的末尾

标签 python string csv writer

我正在修改具有两个字段名的 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/

相关文章:

java - 不同编程语言之间的桥梁

Python pandas 数据框 to_csv 使用 NaN 而不是重复值

excel - 读取 CSV 文件的 Excel 用户定义函数?

python - 单行Python脚本,用于每2个字符用逗号分隔字符串

python - 填充枚举数组

python - For 循环与 json.loads 问题

python - 将 csv 文件转换为具有特定 json 格式的 json + python

javascript - 如何在反引号中创建反引号?

python - 替换字符串中的特定字符

ruby - 在运行时使用字符串作为变量