2011-01-20 121 views
10

我有一個可以下載,編輯並再次上載CSV文件的過程。在下載的CSV文件是正確的格式,沒有包裝的雙引號Python CSV:從值中刪除引號

1, someval, someval2 

當我在一個電子表格,編輯打開CSV和保存,它增加了周圍的字符串雙引號

1, "someEditVal", "someval2" 

我想這只是電子表格(在這種情況下,openoffice)的行動。我想我的上傳腳本刪除包裝雙引號。我無法刪除所有的引號,只是在包含它們的主體中,而且我也不想僅檢查雙引號的第一個和最後一個字符。

林幾乎可以肯定的是Python的CSV庫會知道如何處理這個問題,但不知道如何使用它...

編輯 當我使用的字典中的值,就變成如下

{'header':'"value"'} 

感謝

+1

引號通常被認爲被允許在CSV文件中。你確定你必須刪除它們嗎? – 2011-01-20 23:11:11

+0

是的,我在一個處理腳本中使用它們,並將它們放入字典中,結果如下{'header':''value''} – neolaser 2011-01-20 23:15:15

+0

Open office calc 3.2不在逗號後面加空格。你使用什麼版本? – 2011-01-20 23:44:24

回答

12

爲您例如,下面的工作:

import csv 
writer = csv.writer(open("out.csv", "wb"), quoting=csv.QUOTE_NONE) 
reader = csv.reader(open("in.csv", "rb"), skipinitialspace=True) 
writer.writerows(reader) 

您可能需要使用CSV閱讀器和書寫器的方言選項 - 請參閱documentation of the csv module

+1

QUOTE_NONE在下載/創建CSV時很有用,這非常棒!但我的問題是,當我編輯csv(這是雙引號添加的地方)並再次上傳。儘管謝謝你的回答! – neolaser 2011-01-20 23:25:16

6

感謝所有試圖幫助我的人,但我明白了。指定閱讀器時,可以定義quotechar

csv.reader(upload_file, delimiter=',', quotechar='"') 

這將處理字符串的換行引號。

1

對於Python 3中

import csv 
writer = csv.writer(open("query_result.csv", "wt"), quoting=csv.QUOTE_NONE, escapechar='\\') 
reader = csv.reader(open("out.txt", "rt"), skipinitialspace=True) 
writer.writerows(reader) 

原始答案給出的Python 3.根據此錯誤也詳細參見本SO:csv.Error: iterator should return strings, not bytes

Traceback (most recent call last): File "remove_quotes.py", line 11, in writer.writerows(reader) _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)