[英]Python CSV writer: How to write upc code with leading zero as string?
我正在将Python与csv
writer一起使用,以在几列中导出包含UPC代码(有时包含前导零)的csv。
导出的工作表应如下所示:
name, upc
Blue Perfume, "0853520006427"
Red Cologne, "0223520006427"
Beige Tanner, "8292930112345"
...
为了达到这个目的,我尝试添加双引号,如下所示:
productSKU = '\"' + productSKU + '\"'
但这最终将双双引号输出到csv文件,如下所示:
""0853520006427""
我已阅读在线建议,尝试在工作表的开头添加=,以便Excel将单元格解析为字符串,但这是不希望有的行为,因为它将条目保留在生成的csv文件中,如下所示:
="0853520006427"
与此相反:
"0853520006427"
用csv
writer实现最终结果的正确方法是什么?
编辑
这是我编写的用于测试的快速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
我认为您在写入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)
...:
给出输出:
“蓝色洗发水”,“ 0853520006427”
但是,这也会将您的第一个字段放在引号内(所有字段之间都应保持一致,所以我想应该没问题)。
由于csv模块仅支持4种引号 ( QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONE, QUOTE_NONNUMERIC
),因此,如果使用csv模块,则这是唯一的选择。 当然,您可以以与csv兼容的方式写入不带csv模块的文件。
我最后做了一些测试,似乎将UPC代码用双引号引起来并不能防止EXCEL将字段读取为数字。 大熊猫也会发生同样的事情。 您当然可以做这样的事情: rowData = ['Blue Shampoo', "'0853520006427'"]
,它将输出"Blue Shampoo,'0853520006427'
将以字符串形式读取UPC代码,但是它将具有它周围的单引号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.