2011-01-20 4 views
4

저는 UTF-8로 인코딩 된 XML 파일을 읽고, 일부 조작을 수행하고이를 Google의 Datastore에 저장하는 Python 스크립트에서 작업하고 있습니다 (App Engine 프로그램).비 ASCII 문자로 파이썬에서 파일 입출력을 수행

필자가 파일을 읽고 구문 분석하는 방법은 file.readline()과 몇 가지 정규 표현식을 사용하는 것입니다. 유일한 문제는 내가 작업하고있는 파일에 많은 다른 언어의 문자가 포함되어 있기 때문에 예를 들어 é 또는 Å 또는 러시아어 또는 그리스 문자가있을 수 있습니다.

처음에는 "UnicodeDecodeError : 'ascii'코덱이 0 바이트 위치에서 0xd0 바이트를 디코딩 할 수 없습니다. 서수는 범위 (128)가 아닙니다." 그런 다음 오류를 없애고 출력 된 문자가 올바르게 표시되지 않는 "ISO-8859-15"파일 열기 인코딩을 전환 해 보았습니다.

내 질문은 : 파이썬에서 UTF-8로 인코딩 된 파일을 파이썬이 파일의 모든 특수 문자에 집착하지 않고 작업하는 법입니다. 나는 이것이 충분히 명확하고, 어떤 충고에 대해서 미리 감사하기를 바란다.

+0

패턴과 문자열을 유니 코드 문자열로 검색합니까? – nmichaels

+0

예 - 정규 표현식에서 특수 문자를 검색하지 않습니다. – dshipper

답변

4

체스 조각해야하는데 str.decode

>>> print '\xe2\x99\x9e'.decode('utf-8') 
♞ 

에 UTF-8 인코딩을 지정하지만 :)

+0

+1 좋은 예. 나는 유니 코드 체스 조각을 좋아합니다. – Blender

+0

@ 닉 뭐든간에 무엇을 의미합니까?)? – Blender

+0

@Blender Me? 내가 뭐라고 말 했니? –

0

effbot 당신이 수를 참조 대답과 함께 확장을 참조하십시오 너무 작은입니다 다음과 같이 각 줄을 처리하십시오.

raw = file.readline() 
proc = raw.decode('utf-8') 
1

파일과 함께 사용하는 인코딩을 ISO-8859-1로 변경했다고합니다. UTF-8로 변경하려고 했습니까?

관련 문제