创建单个列以写入新的csv

时间:2016-08-02 18:17:32

标签: python csv

CSV会返回以下值

"1,323104,564382"
"2,322889,564483"
"3,322888,564479"
"4,322920,564425"
"5,322942,564349"
"6,322983,564253"
"7,322954,564154"
"8,322978,564121"

我如何从行的每一端取下“标记,当我这样做时,它似乎会制作单独的列。

reader=[[i[0].replace('\'','')] for i in reader]

根本不会更改文件

2 个答案:

答案 0 :(得分:0)

首先剥离引号似乎更容易,然后将它提供给csv阅读器,它只需将任何可迭代的行作为输入。

import csv
import sys

f = open(sys.argv[1])
contents = f.read().replace('"', '')

reader = csv.reader(contents.splitlines())

for x,y,z in reader:
     print x,y,z

答案 1 :(得分:0)

假设每一行都用两个双引号括起来,我们可以这样做:

f = open("filename.csv", "r")
newlines = []
for line in f:  # we could use a list comprehension, but for simplicity, we won't.
    newlines.append(line[1:-1])
f.close()

f2 = open("filename.csv", "w")
for index, line in enumerate(f2):
    f2.write(newlines[index])
f2.close()

[1:-1]使用列表索引操作将字符串的第二个字母设置为字符串的最后一个字母,每个字母由索引1-1表示。

enumerate()是一个辅助函数,可将迭代转换为(0, first_element), (1, second_element), ...对。

对文件进行迭代可以获得它的行。