【问题标题】:Python - Save CSV file in UTF-16LEPython - 以 UTF-16LE 保存 CSV 文件
【发布时间】:2011-06-27 13:49:36
【问题描述】:

我必须将 som 数据导入我的 Yahoo Marketing 帐户 - CSV 文件必须在 - yahoo 中进行编码:CSV/TSV 文件:Unicode(技术上是 UTF-16LE 编码)

writer = csv.writer(open('new_yahoo.csv','w', encoding='utf-16-le'), delimiter="\t")
writer.writerows(reader)

【问题讨论】:

  • 这不是一个真正的问题......我回答了我认为你想要的(可以用 Python 的 csv.writer 完成),但你真的需要准确地解释你想要什么。

标签: python csv


【解决方案1】:

如果您向下滚动 Python CSV page 中提供的示例,您会发现它

csv 模块不直接支持读写 Unicode,但它是 8-bit-clean 保存 ASCII NUL 字符的一些问题。因此,只要您避免使用像 UTF-16 这样使用 NUL 的编码,您就可以编写函数或类来为您处理编码和解码。推荐使用 UTF-8。

但如果您确实需要使用 unicode,看起来这可能会有所帮助:

下面的 unicode_csv_reader() 是一个生成器,它包装了 csv.reader 以处理 Unicode CSV 数据(Unicode 字符串列表)。

...

对于所有其他编码,可以使用以下 UnicodeReader 和 UnicodeWriter 类。他们在构造函数中采用了额外的编码参数,并确保数据通过编码为 UTF-8 的真实读取器或写入器:

所以看起来他们在底部提供的示例应该做你想要的编码。

【讨论】:

    【解决方案2】:

    根据使用的open 命令判断,您使用的似乎是 Python 3.X。尽管您可能还需要定义 newline 参数,但您所拥有的应该可以工作。 newline='' 将使用本机行尾(例如 Windows 上的 CRLF),但 Yahoo 可能有其他要求。下面的代码在带有 CRLF 行结尾的 Windows 上正确生成了文件。

    data = [
        ['One','Two','Three'],
        [1,2,3],
        [4,5,6],
        [7,8,9]]
    
    import csv
    f = open('new_yahoo.csv','w', newline='', encoding='utf-16-le')
    writer = csv.writer(f, delimiter='\t')
    writer.writerows(data)
    f.close()
    

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2019-03-05
      • 1970-01-01
      • 2014-08-14
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多