【问题标题】:write csv files including unicode with python 2.7使用 python 2.7 编写包含 unicode 的 csv 文件
【发布时间】:2015-01-22 20:41:53
【问题描述】:

我正在使用csv 模块将包含一些非ascii 字符的大型列表写入csv 文件。我不断收到以下错误消息

UnicodeEncodeError: 'ascii' codec can't encode characters in position 48-50: ordinal not in range(128)

我不需要这些字符,因此可以忽略它们。我尝试了在 SOF 上推荐的不同方法,但到目前为止都没有奏效(错误消息相同)。有没有一种简单的方法可以绕过编码错误并继续?我试过了:

io.open(file, encoding = "utf-8")
codecs.open(file, encoding = "utf-8")
codes.open(file, errors = "ignore")

我可以使用pandas 模块将数据写入csv,只需设置encoding = "utf-8"。我可以在csv 模块中做类似的事情吗?

【问题讨论】:

    标签: python python-2.7 csv unicode


    【解决方案1】:

    您可以安装 unicodecsv 或者您可以在使用 csv writer 写入您的 CSV 文件时以 utf-8 格式写入您的行。

    import csv
    with open("sample.csv", "w") as wf:
        writer = csv.writer(wf)
        writer.writerow([unicode(s, "utf-8") for s in row])
    

    【讨论】:

      【解决方案2】:

      对于 Python 2.7,您应该使用 unicodecsv 模块:unicodecsv 0.9.4。这是 Python 内置的 csv 模块的替代品,它确实支持 Unicode。在 Python 3.x 中,您不再需要此替换,因为 Python 3.x 在其 csv 模块中支持 Unicode。

      你可以通过运行安装它:

      pip install unicodecsv
      

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 2017-06-07
        • 2014-07-21
        • 1970-01-01
        • 2013-08-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        相关资源
        最近更新 更多