Python CSV writer:如何用前导零作为字符串编写upc代码?

时间:2018-03-30 19:21:59

标签: python string csv

我正在使用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

2 个答案:

答案 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 quotesQUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONE, QUOTE_NONNUMERIC),如果您使用csv模块,这是唯一的选项。当然,你可以在没有csv模块的情况下以csv兼容的方式写入文件。

答案 1 :(得分:0)

我在我的结尾做了一些测试,似乎用双引号括起UPC代码无助于防止EXCEL以数字形式读取字段。大熊猫也会发生同样的事情。你当然可以这样做: rowData = ['Blue Shampoo', "'0853520006427'"],将输出"Blue Shampoo,'0853520006427'。 Excel会以字符串形式读取UPC代码,但它周围会有单引号。