将列添加到csv文件的开头

时间:2017-04-11 11:39:15

标签: python csv

我想在csv文件的开头添加一个新列,我想迭代遍历每一行,只是将包含我新列的内容的列表添加到一起,旧列表就可以了,它确实有效,但它只适用于循环内部。为什么这样做?

文件:

column1 column2 column3
x1      y1      z1
x2      y2      z2

预期输出:

0 column1 column2 column3
0 x1      y1      z1
0 x2      y2      z2

代码:

import csv

x = open('C:/Documents and Settings/admin/Desktop/sample.csv')
y = csv.reader(x)
z = []
for row in y:
    z.append(row)
for n in z:
    n = ['0'] + n
    print(n)

for m in z:
    print(m)

我得到了什么:

[0, column1, column2, column2]
[0, x1, y1, z1]
[0, x2, y2, z2]
[column1, column2, column2]
[x1, y1, z1]
[x2, y2, z2]

零点基本上消失在该循环之外。为什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

特殊"故障"你看到的是因为范围界定的结果。即使您的第一个循环将n设置为['0'] + n,它也只会在该循环的范围内发生,而不会更改z

您可以做的是创建一个新列表并将新n添加到该列表中:

new_list = []
for n in z:
    n = ['0'] + n
    new_list.append(n)

for m in new_list:
    print(m)

答案 1 :(得分:0)

如果在更改行时更改z,则可以实现此目的

import csv

x = open('C:/Documents and Settings/admin/Desktop/sample.csv')
y = csv.reader(x)
z = []
for row in y:
    z.append(['0'] + row)
print(z)

for m in z:
    print(m)