MRJob을 사용하여 아주 기본적인 단어 수를 구현하려고합니다. 모든 아스키 입력으로 잘 작동하지만 내가 입력에 키릴 단어를 혼합 할 때, 나는 출력으로 같은 것을 얻을python map 키릴 문자로 간단한 단어 수를 줄입니다.
"\u043c\u0438\u0440" 1
"again!" 1
"hello" 2
"world" 1
는 지금까지 내가 이해, 위의 첫 번째 행은 키릴 단어의 인코딩 된 하나의 사건이다 "мир", 내 샘플 입력 텍스트와 관련하여 올바른 결과입니다. 여기에 MR 코드가 있습니다
저는 Windows에서 Python 2.7 및 mrjob 0.4.2를 사용하고 있습니다. 제 질문은 :
) 정확하게 을 읽을 수 있습니까? 키릴 문자 입력시 키릴 문자 출력을 어떻게 할 수 있습니까? b)이 동작의 근본 원인은 무엇입니까 - 파이썬/MR 버전 또는 비 Windows에서 다르게 작동 할 것으로 예상 되었습니까 - 단서가 있습니까?
내가
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python27\lib\encodings\cp866.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
컴퓨터에서 명령의 결과는 무엇입니까?'python -c "print 'мир', u'мир '"'? – jfs
UnicodeEncodeError : 'charmap'코덱이 0-2 위치의 문자를 인코딩 할 수 없습니다. 문자는 –
Anton
으로 매핑됩니다. 유니 코드 이스케이프를 사용하여 유니 코드 리터럴을 작성하려고 시도하십시오. 'python -c'print 'мир', u '\ u043c \ u0438 \ u0440 '' '. 또한 오류가 발생하면 'PYTHONIOENCODING' envvar를 콘솔에서 사용하는 문자 인코딩 (예 :'cp1251' 또는'cp866')으로 설정하십시오. 아마, 비 ASCII 문자를 파이썬에서 Windows 콘솔로 출력하는 문제를 피하기 위해,'mrjob'은'.encode ('unicode-escape')'를 호출하거나 JSON 텍스트를 입출력 (비슷한 이스케이프를 사용합니다)으로 사용할 수도 있습니다. – jfs