You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CSV Writer:如何将带前导零的UPC码以字符串写入?

嘿,我太懂你这个烦恼了!手动给UPC码套双引号,结果导出的CSV里变成了""0853520006427"",这完全是因为Python的csv模块本身就会自动处理引号逻辑——你手动加的引号会被它当成字段内容的一部分,所以它会再套一层引号来转义,就出现了重复的情况。

别慌,给你两个靠谱的解决方案,完美匹配你想要的CSV格式:

方案1:精准控制单个字段加引号(匹配你给出的示例格式)

这个方案会让name字段不带引号,upc字段被双引号包裹,正好符合你要的效果:

import csv

# 注意:UPC必须是字符串类型,别转成数字!否则前导零会丢失
products = [
    ["Blue Perfume", "0853520006427"],
    ["Red Cologne", "0223520006427"],
    ["Beige Tanner", "8292930112345"]
]

with open("products.csv", "w", newline="") as csv_file:
    # 设置QUOTE_NONE告诉writer不要自动加引号,同时指定escapechar处理特殊情况
    writer = csv.writer(csv_file, quoting=csv.QUOTE_NONE, escapechar='"')
    writer.writerow(["name", "upc"])
    for name, upc in products:
        # 手动给UPC套引号,writer不会再额外添加
        writer.writerow([name, f'"{upc}"'])

导出的CSV就是你想要的样子:

name,upc
Blue Perfume,"0853520006427"
Red Cologne,"0223520006427"
Beige Tanner,"8292930112345"

方案2:让所有非数字字段自动加引号

如果不在意name字段也被引号包裹,这个方法更简单,适合批量处理:

import csv

products = [
    ["Blue Perfume", "0853520006427"],
    ["Red Cologne", "0223520006427"],
    ["Beige Tanner", "8292930112345"]
]

with open("products.csv", "w", newline="") as csv_file:
    # QUOTE_NONNUMERIC会给所有非数字类型的字段自动加引号
    writer = csv.writer(csv_file, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerow(["name", "upc"])
    writer.writerows(products)

导出的CSV会是这样:

"name","upc"
"Blue Perfume","0853520006427"
"Red Cologne","0223520006427"
"Beige Tanner","8292930112345"

关键提醒!

无论用哪个方案,一定要确保UPC码是字符串类型,如果从数据库、API或者其他地方读取的UPC是数字,记得用str(upc)转成字符串,不然前导零会直接丢失,这才是最核心的问题哦。

内容的提问来源于stack exchange,提问作者AlfredoGG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:24:05