【发布时间】:2020-05-21 05:09:34
【问题描述】:
我正在使用 python 读取具有以下设置的 CSV 文件:
import unicodecsv, ssl
ctx = ssl._create_unverified_context()
response = urllib2.urlopen(url, timeout=300, context=ctx)
data = unicodecsv.reader(response,
delimiter=";",
quotechar="\"",
doublequote=False,
quoting=unicodecsv.QUOTE_ALL,
skipinitialspace=True,
encoding="utf-8-sig")
对于这一行:
“ID”;“产品”;“URL”;“颜色”;“库存”
它返回: “ID”、产品、URL、颜色、库存
所以对于行中的第一个元素,它保留引号。我使用 utf-8-sig 因为有 BOM 字符。
【问题讨论】:
-
发布minimal reproducible example而不是显示设置更有效。
-
我已经用一些代码更新了这个例子。
-
为什么你有两次
skipinitialspace和encoding?删除这些,并在response = io.BytesIO(b'\xef\xbb\xbf' + '"ID";"Product";"URL";","Color";"Stock"'.encode())上运行它,我无法重现您的错误 -list(data)是[['ID', 'Product', 'URL', ',Color"', 'Stock']]。 -
使用
unicodecsv是否意味着您使用的是Python 2?你可能应该这么说,如果是的话,添加一个相应的标签。 -
是的,python 2。@Amadan 我已经删除了重复的属性。我看到你的结果也有错误,所以可能是相似的。 -> ',颜色"'
标签: python python-2.7 csv