我正在使用Python和csv
编写器在几列中导出包含UPC代码(有时包含前导零)的csv。
导出的工作表应如下所示:
name, upc
Blue Perfume, "0853520006427"
Red Cologne, "0223520006427"
Beige Tanner, "8292930112345"
...
在我尝试实现这一目标时,我尝试添加双引号,如下所示:
productSKU = '\"' + productSKU + '\"'
但这最终会向csv文件输出双引号,如下所示:
""0853520006427""
我已经阅读了在线建议,尝试在工作表的开头添加=,以便Excel将单元格解析为字符串,但这是不需要的行为,因为它将结果留在生成的csv文件中,如下所示:< / p>
="0853520006427"
与此相反:
"0853520006427"
使用csv
编写器实现此最终结果的正确方法是什么?
修改
这是我编写的一个快速python脚本:
import csv
filename = 'output.csv'
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
rowData = ['Blue Shampoo', '0853520006427']
writer.writerow(rowData)
rowData = ['Blue Shampoo', '\"0853520006427\"']
writer.writerow(rowData)
rowData = ['Blue Shampoo', '=\"0853520006427\"']
writer.writerow(rowData)
rowData = ['Blue Shampoo', '\'0853520006427']
writer.writerow(rowData)
注意结果数据:
Blue Shampoo,0853520006427
Blue Shampoo,"""0853520006427"""
Blue Shampoo,"=""0853520006427"""
Blue Shampoo,'0853520006427
答案 0 :(得分:0)
我认为您在写入csv时必须明确提供所有数据的引用,并选择QUOTE_ALL
作为引用策略:
In [23]: import csv
...:
...: filename = 'output.csv'
...:
...: with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
...: writer = csv.writer(csvfile, delimiter=",", quotechar='"', quoting=csv.QUOTE_ALL)
...: rowData = ['Blue Shampoo', '0853520006427']
...: writer.writerow(rowData)
...:
提供输出:
&#34;蓝色洗发水&#34;,&#34; 0853520006427&#34;
但是,这也会将你的第一个字段放在引号内(这将在所有字段中保持一致,所以我猜也好。)
由于csv模块only supports 4 types of quotes(QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONE, QUOTE_NONNUMERIC
),如果您使用csv模块,这是唯一的选项。当然,你可以在没有csv模块的情况下以csv兼容的方式写入文件。
答案 1 :(得分:0)
我在我的结尾做了一些测试,似乎用双引号括起UPC代码无助于防止EXCEL以数字形式读取字段。大熊猫也会发生同样的事情。你当然可以这样做:
rowData = ['Blue Shampoo', "'0853520006427'"]
,将输出"Blue Shampoo,'0853520006427'
。 Excel会以字符串形式读取UPC代码,但它周围会有单引号。