for循环后的Python ascii错误

时间:2012-09-18 03:30:34

标签: python

当我在python中运行这个简单的程序时,我在“for line in file”之后得到一个ascii错误。我尝试了很多改变但没有成功。为什么我会遇到这个问题?

代码:

flashcards = {}

def Gaelic():
    file = open ("gaelic_flashcard_mode.txt", "r")
    for line in file:
        print("clear4")
        line1 = line.rstrip().split("=")
        key = line1[0]
        trans = line1[1]
        PoS = line1[2]
        flashcards[key] = [trans, PoS]
    print(flashcards)

正在读入的文本文件(gaelic_flashcard_mode.txt):

I=mé=(pron) (emphatic)
I=mise=(n/a)
you=tú=(pron) (subject)
you=tusa=(emphatic)
y'all=sibh=(plural)
y'all=sibhse=(emphatic)
he=sé=(pron)
he=é=(n/a)
he=seisean=(emphatic)
he=eisean=(n/a)
she=sí=(pron)
she=í=(n/a)
she=sise=(emphatic)
she=ise=(emphatic)
him=é=(pron)
him=eisean=(emphatic)
her=í=(pron)
her=ise=(emphatic)
her=a=(adj)

2 个答案:

答案 0 :(得分:2)

您使用的是Python 3.X吗?您的打印陈述似乎表明了这一点。

使用encoding的{​​{1}}参数指定源文件的编码。

此外,由于您有多个“键”,因此字典无法容纳openhim等各种版本,因此您可能需要一个列表:

her

输出:

def Gaelic():
    with open('gaelic_flashcard_mode.txt','r',encoding='utf8') as f:
        return [tuple(line.rstrip().split('=')) for line in f]

print(Gaelic())

答案 1 :(得分:1)

因为您正在使用open()打开非ASCII文本文件。请改用codecs.open(),并为其传递适当的编码。并read this