【问题标题】:Python - Reading CSV UnicodeErrorPython - 读取 CSV UnicodeError
【发布时间】:2020-03-07 10:00:37
【问题描述】:

我已经从 Kaggle 导出了一个 CSV - https://www.kaggle.com/ngyptr/python-nltk-sentiment-analysis。但是,当我尝试遍历文件时,我收到有关某些无法编码的字符的 unicode 错误。

File "C:\Program Files\Python35\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]

UnicodeEncodeError: 'charmap' 编解码器无法对位置 264 中的字符 '\u2026' 进行编码:字符映射到

我在打开文件时启用了 utf-8 编码,我认为它会解码 ASCII 字符。显然不是。

我的代码:

with open("sentimentDataSet.csv", "r", encoding="utf-8" ,errors='ignore', newline='') as file:
    reader = csv.reader(file)-
    for row in reader:
        if row:
            print(row)
            if row[sentimentCsvColumn] == sentimentScores(row[textCsvColumn]):
                accuracyCount += 1
    print(accuracyCount)

【问题讨论】:

    标签: python python-3.x csv


    【解决方案1】:

    这是一个 encode 错误,因为您正在打印该行,并且与读取实际 CSV 几乎没有关系。

    您的 Windows 终端采用 CP850 编码,不能代表所有内容。

    你可以在这里做一些事情。

    • 一种简单的方法是将PYTHONIOENCODING 环境变量设置为一个组合,该组合将丢弃它无法表示的内容。 set PYTHONIOENCODING=cp850:replace 在运行 Python 之前会让 Python 用问号替换 CP850 中无法表示的字符。
    • 在运行 Python 之前将终端编码更改为 UTF-8:chcp 65001
    • 打印前手动编码:print(str(data).encode('ascii', 'replace'))
    • 不要打印这个东西。

    【讨论】:

    • 非常有帮助,我从没想过 Windows 终端会导致问题。我将终端编码更改为 UTF-8,它现在可以工作了。谢谢
    • 不客气。如果答案对您有所帮助,请务必将其标记为已接受。 :) 顺便说一句,将来最好发布更多的错误回溯; `print(row) 行必须在其中。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多