gpt4 book ai didi

python - 如何向 CSV 文件添加新列?

转载 作者:IT老高 更新时间:2023-10-28 20:28:57 25 4
gpt4 key购买 nike

我有几个 CSV看起来像这样的文件:

Input
Name Code
blackberry 1
wineberry 2
rasberry 1
blueberry 1
mulberry 2

我想为所有 CSV 文件添加一个新列,使其如下所示:

Output
Name Code Berry
blackberry 1 blackberry
wineberry 2 wineberry
rasberry 1 rasberry
blueberry 1 blueberry
mulberry 2 mulberry

我目前的脚本是这样的:

import csv
with open(input.csv,'r') as csvinput:
with open(output.csv, 'w') as csvoutput:
writer = csv.writer(csvoutput)
for row in csv.reader(csvinput):
writer.writerow(row+['Berry'])

(Python 3.2)

但在输出中,脚本跳过每一行,新列中只有 Berry:

Output
Name Code Berry
blackberry 1 Berry

wineberry 2 Berry

rasberry 1 Berry

blueberry 1 Berry

mulberry 2 Berry

最佳答案

这应该让您知道该怎么做:

>>> v = open('C:/test/test.csv')
>>> r = csv.reader(v)
>>> row0 = r.next()
>>> row0.append('berry')
>>> print row0
['Name', 'Code', 'berry']
>>> for item in r:
... item.append(item[0])
... print item
...
['blackberry', '1', 'blackberry']
['wineberry', '2', 'wineberry']
['rasberry', '1', 'rasberry']
['blueberry', '1', 'blueberry']
['mulberry', '2', 'mulberry']
>>>

编辑,注意在py3k中你必须使用next(r)

感谢您接受答案。在这里你有一个奖励(你的工作脚本):

import csv

with open('C:/test/test.csv','r') as csvinput:
with open('C:/test/output.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)

all = []
row = next(reader)
row.append('Berry')
all.append(row)

for row in reader:
row.append(row[0])
all.append(row)

writer.writerows(all)

请注意

  1. csv.writer 中的lineterminator 参数。默认情况下是设置为 '\r\n' 这就是你有双倍间距的原因。
  2. 使用列表附加所有行并将它们写入writerows 的一张照片。如果你的文件非常非常大,这个可能不是一个好主意(RAM),但对于普通文件,我认为它是更快,因为 I/O 更少。
  3. 正如这篇文章的评论中所指出的,请注意,而不是嵌套两个 with 语句,您可以在同一行中进行:

    用 open('C:/test/test.csv','r') 作为 csvinput,open('C:/test/output.csv', 'w') 作为 csvoutput:

    <

关于python - 如何向 CSV 文件添加新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com