0

当我在 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)
4

2 回答 2

2

你在使用 Python 3.X 吗?您的印刷声明似乎表明了这一点。

使用encoding参数 ofopen指定源文件的编码。

此外,由于您有多个“键”,因此字典不能保存 , 等的各种版本himher因此您可能需要一个列表:

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

print(Gaelic())

输出:

[('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)')]
于 2012-09-18T06:33:06.550 回答
1

因为您open()用于打开非 ASCII 文本文件。改为使用codecs.open(),将其传递给适当的编码。并阅读此

于 2012-09-18T03:36:09.567 回答