2013-11-15 118 views
1

我在這裏看到很多關於如何從CSV文件的行內刪除引號,但這不是我所遇到的問題。使用類似Python - 正則表達式從CSV文件中的整行刪除引號

with open(path), 'wb') as myfile: 
    writer = csv.writer(myfile) 

我需要創建包含3個變量值的行。這導致了這樣一行:

newline = var1 + " " + var2 + " " + var3 

我要像value1 value2 value3結果,而是它給了我"value1 value2 value3"。我嘗試了它之間沒有空格,所有這一切都搞亂了格式化而不刪除引號。我也嘗試將quoting = CSV_NOQUOTE(或類似的東西)添加到作者聲明中,但是這導致了關於缺少的escapechars的錯誤,直到我在\n中添加了錯誤,並且即使這樣也沒有刪除引號。我一直在這裏搜索這裏的網頁,大約一個小時試圖找到一些東西,但沒有發現我的工作。任何人都可以提供任何建議嗎?謝謝!

編輯:爲了配合標題,在這一點上,我很沮喪,我很滿意的解決方案,只是擺脫引號與正則表達式,而不是阻止它們形成。我只是不太瞭解Python的正則表達式,我已經很少使用它了,而且我不確定如何基本上完成與sed s/command相同的操作。

+1

是你想創造一個空間分隔的文件或逗號分隔的文件?另外的文檔:http://docs.python.org/2/library/csv.html很清楚如何更改引號字符 – Cfreak

+0

@Cfreak只是空格分開,沒有逗號 – thnkwthprtls

+0

文檔也非常清晰如何更改分隔符。 – Cfreak

回答

6

您沒有顯示實際使用的線條writer將一行寫入文件。人們有時犯的一個錯誤是假設writerow接受除了可迭代的值之外的其他東西。

下面的代碼(蟒蛇2):

import csv 
with open("out.dat", "wb") as myfile: 
    writer = csv.writer(myfile, delimiter=" ", quoting=csv.QUOTE_NONE) 
    var1, var2, var3 = 3.14, 2.1728, "Fred" 
    writer.writerow([var1, var2, var3]) 

產生

~/coding$ cat out.dat 
3.14 2.1728 Fred 
+0

我相信是這樣,謝謝:)我覺得這是一個小錯誤,這是我第一次使用這個東西,所以我仍然有點不穩定 – thnkwthprtls

1

編寫CSV文件的一種選擇是僅完全避免csv模塊:

output = [var1, var2, var3] 

with open('output.csv', 'wb') as fo: 
    fo.write(','.join([str(x) for x in output]) + '\n') 

當然你也可以用列表的列表(或任何可迭代)做到這一點寫出來的多行:

outlist = [[var1, var2, var3], [var4, var5, var6]] 

with open('output.csv', 'wb') as fo: 
    for out in outlist: 
     fo.write(','.join([str(x) for x in out]) + '\n') 

如果你想將空格作爲分隔符,你可以使用' '.join()來代替。

相關問題