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パラメーターを使用してopen、ソース ファイルのエンコーディングを指定します。

また、複数の「キー」があるため、辞書は 、 などのさまざまなバージョンを保持できないため、him代わり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())

出力:

[('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 に答える