Python CSV:从值中删除引号

时间:2011-01-20 23:08:22

标签: python csv

我有一个过程,可以下载,编辑然后再次上传CSV文件。在下载时,CSV文件的格式正确,没有包装双引号

1, someval, someval2

当我在电子表格中打开CSV,编辑并保存时,它会在字符串

周围添加双引号
1, "someEditVal", "someval2"

我认为这只是电子表格的操作(在本例中为openoffice)。我希望我的上传脚本删除包装双引号。我无法删除所有引号,只是包含正文包含它们,我也不想只检查双引号的第一个和最后一个字符。

我几乎可以肯定python中的CSV库知道如何处理这个,但不知道如何使用它......

EDIT 当我使用字典中的值时,结果如下

{'header':'"value"'}

由于

3 个答案:

答案 0 :(得分:16)

对于您的示例,以下工作:

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 :(得分:10)

感谢所有想帮助我的人,但我明白了。指定阅读器时,您可以定义quotechar

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

这会处理字符串的包装引号。

答案 2 :(得分:5)

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

  

追踪(最近一次通话):     文件" remove_quotes.py",第11行,in       writer.writerows(阅读器)   _csv.Error:迭代器应该返回字符串,而不是字节(你是否以文本模式打开文件?)