【发布时间】:2015-02-18 19:58:40
【问题描述】:
我正在尝试使用 Python 读取 CSV 文本文件(UTF-8,根据 Notepad++ 没有 BOM)。但是编码似乎有问题:
打印(打开(路径,编码=“utf-8”)。读取())编解码器无法解码字节08xf
这个小字符似乎是问题所在:●(完整字符串:“●• อีเปียขี้บ่น ت•●”),但我相信还会有更多。
如果我尝试 UTF-16,则会出现一条消息:
#也尝试了编码 print(open(path, encoding="utf-16").read().encode('utf-8'))非法的 UTF-16 代理
即使我尝试使用自动编解码器查找器打开它,我也会收到错误消息。
def csv_unireader(f, encoding="utf-8"):
对于 csv.reader(codecs.iterencode(codecs.iterdecode(f, encoding), "utf-8")) 中的行:
yield [e.decode("utf-8") for e in row]
我忽略了什么?该文件包含 Twitter 文本,其中肯定包含许多不同的字符。但这在 Python 中不会是那么困难的任务,只是读取/打印文件?
编辑:
刚刚尝试使用此答案中的代码:https://stackoverflow.com/a/14786752/45311
导入 csv 使用 open('source.csv', newline='', encoding='utf-8') 作为 f: 阅读器 = csv.reader(f) 对于阅读器中的行: 打印(行)这至少会在屏幕上打印一些行,但在某些行之后也会抛出错误:
cp850.py,第 19 行,在编码中 返回 codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError:“charmap”编解码器无法对位置 62-63 中的字符进行编码: 字符映射到
它似乎自动使用 CP850 这是另一种编码...我无法理解这一切......
【问题讨论】:
标签: python csv encoding utf-8 character-encoding