在将解析的内容写入python 2.7中的csv时,我不断遇到此类错误:UnicodeEncodeError:'ascii'编解码器无法编码570-579位置的字符:序号不在范围内(128)
所以在经过一些研究之后,我发现了文档中的示例以及关于SO的类似问题:Read and Write CSV files including unicode with Python 2.7但我无法使用以下代码:
data = {
'scrapeUrl': url,
'model': final_model_num,
'title': final_name,
'description': final_description,
'price': str(final_price),
'image': final_first_image,
'additional_image': final_images,
'quantity': '1',
'subtract': '1',
'minimum': '1',
'status': '1',
'shipping': '1'
}
with open("local/file1.csv", "w") as f:
writer=csv.writer(f, delimiter=",")
writer.writerows([data.keys()])
for row in zip(*data.values()):
row=[s.encode('utf-8') for s in row]
writer.writerows([row])
我的版本似乎只是将每个变量的第一个字符写入每一行;我尝试删除解压缩密钥作为一些故障排除,但这导致所有数据正确打印,但是csv的一列而不是一行 .
1 回答
你本质上拥有的是一组键值对,所以你基本上只有一组值,当调用
zip
时,最终会被分解为单个字符'rows':此外,示例中的最短值的
len
为1,这将解释为什么只有所有值的第一个字符作为输出的单行 .你想做的就是这样
或者,使用codecs.open与编码来解决
unicode
手动解码unicode
.