首页 > 解决方案 > 如何在 python 2.7 中读取非 ascii 字符

问题描述

我知道这可能是一个非常普遍的问题,并且已经给出了很多解决方案。我无法为我的问题找到解决方案,如果有任何重复的帖子,或者如何解决它,请有人告诉我。

我需要读取同时具有 ascii 和非 ascii 字符的源数据(在 python2.7 中需要帮助)。阅读后我需要对源数据进行一些比较,然后将其写入目标文件。

with open('read.txt', "r") as file:

    reader = csv.reader(file, delimiter='\t')
    for lines in reader:
        LST_NM = (lines[0])
    print(LST_NM)

我的源文件是:read.txt

"Abràmoff"

使用这个非 ascii 字符,我的代码给出以下错误 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 266: ordinal not in range(128)

谢谢!!!

标签: python-2.7

解决方案


您需要确定用于创建文件的编码。例如,如果您的文件是使用 utf-8 编写的,那么您可以使用如下内容:

your_encoding = 'utf-8'
import codecs
f = codecs.open('read.txt', encoding=your_encoding)
for line in f:
    print repr(line)

您可以尝试的其他一些编码包括 Windows 上常见的 'cp1252' 和可能的 'latin_1'

参考


推荐阅读