2011-01-20 122 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?)