2012-09-18 2 views
0

파이썬에서이 간단한 프로그램을 실행할 때 "for line in file"다음에 ascii 오류가 발생합니다. 나는 성공하지 못하여 많은 변화를 시도했다. 왜이 문제에 부딪 혔을까요?for 루프 이후의 파이썬 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) 
+0

그 외 : 'flashcards'는 각 'key'에 대해 마지막으로 읽은 'key'에 해당하는 'trans'및 'PoS'로 끝날 것입니다. 나는. 당신은''그녀 '': '' ','(강조) '' '또는 어떤 것이 아니라 ['a ','(adj) ']'만을 가질 것입니다. – DSM

+0

나를 위해 잘 작동합니다. 나는 어떤 오류도 내지 않는다. 파이썬 버전은 어떤 플랫폼에서 사용하고 있습니까? – ronakg

+0

이 코드를 다른 곳에서 복사하여 붙여 넣으셨습니까? 다른 텍스트 편집기, 아마도? 이 경우,':'는 ascii가 아닌 것이 가능합니다 :'. – inspectorG4dget

답변

1

가 아닌 ASCII 텍스트 파일을 열 open()을 사용하기 때문에. 대신 적절한 인코딩을 전달하여 codecs.open()을 사용하십시오. 그리고 read this.

+1

파이썬 3처럼 보입니다 ...'open'이 작동합니다 (선택적인'encoding' 매개 변수가 필요합니다) – nneonneo

2

Python 3.X를 사용하고 있습니까? 귀하의 진술서에 그렇게 진술되어있는 것 같습니다.

openencoding 매개 변수를 사용하여 원본 파일의 인코딩을 지정하십시오. 또한

, 여러 "키"가 이후 사전 등 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)')] 
+0

인코딩 방법이 Idle에서 저에게 효과적 이었지만 터미널에서 실행할 때 인코딩은 "TypeError : '인코딩'은이 함수 로그 아웃에 대한 잘못된 키워드 인수입니다. " –

+0

동일한 버전의 Python을 실행 중이십니까? 위의 경우 Python 3.X가 필요합니다. 파이썬 2.X에는 기본 제공'open'에 대한 인코딩 매개 변수가 없습니다. –

+0

예, 저는이 모든 것을 위해 Python 3.X를 실행했습니다. –