【问题标题】:How to write a number as text while writing in csv file in python如何在python中写入csv文件时将数字写入文本
【发布时间】:2015-04-01 10:36:27
【问题描述】:
import csv
a = ['679L', 'Z60', '033U', '0003']
z = csv.writer(open("test1.csv", "wb"))
z.writerow(a)

考虑上面的代码

输出:

676L   Z60   33U   3

我需要以文本格式本身获取它

676L   Z60   033U   0003

如何做到这一点。

【问题讨论】:

  • 您发布的代码的输出已经是您所期望的。您使用什么工具打开 CSV 文件?
  • 我的输出是 676L Z60 33U 3 :(
  • 但那不是 Python 这样做。 Python 写入0003
  • 在文本编辑器中打开 csv 文件以查看其实际内容。
  • 我没有使用任何其他工具。

标签: python csv export-to-csv


【解决方案1】:

Python csv 模块在写入文件时将字符串视为数字:

>>> import csv
>>> from StringIO import StringIO
>>> a = ['679L', 'Z60', '033U', '0003']
>>> out = StringIO()
>>> z = csv.writer(out)
>>> z.writerow(a)
>>> out.getvalue()
'679L,Z60,033U,0003\r\n'

如果您在阅读时在其他工具中看到3,则需要修复该工具; Python 在这里没有错。

您可以指示csv.writer() 在任何不是数字的地方加上引号;这可以使读取 CSV 的任何内容都更清楚地知道该列不是数字。将quoting 设置为csv.QUOTE_NONNUMERIC

>>> out = StringIO()
>>> z = csv.writer(out, quoting=csv.QUOTE_NONNUMERIC)
>>> z.writerow(a)
>>> out.getvalue()
'"679L","Z60","033U","0003"\r\n'

但这不会阻止 Excel 将列视为数字无论如何

如果您将其加载到 Excel 中,则不要使用 打开 功能。而是创建一个新的空工作表并改用 Import 功能。这将允许您将列指定为 Text 而不是 General

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多