2016-08-02 18 views
0

一個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] 

不會改變在所有

+0

[Python strip from csv每個雙引號]的可能重複(http://stackoverflow.com/questions/31281699/python-strip-every-double-quote-from-csv) –

回答

0

你如何打開文件?如果您想將這個文件是隻讀文件中像一個字符串,它顯然行不通的。如果你的工作與CSV文件,而不是試圖重新發明輪子,你可能會跳過所有這些解析,只使用csv包。

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 
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), ...對。

對文件進行迭代可以獲得它的行數。