2009-07-02 5 views
0

파이썬에서 JSON 피드를 구문 분석 중이며이 문자가 포함되어있어 유효성을 검사하지 않습니다.파이썬에서 외부 기호로 작업하기

이러한 기호를 처리 할 수있는 방법이 있습니까? 그들은 개종 할 수 있습니까 아니면 그들을 깔끔하게 제거 할 수 있습니까?

이 기호가 무엇인지 또는 무엇이 원인인지 알지 못합니다. 그렇지 않으면 직접 연구 할 것입니다.

편집 : Stackover 흐름 그래서 여기에 문자를 제거한다 : [?] http://files.getdropbox.com/u/194177/symbol.jpg

이 있다는 아마 당신이 가지고있는 텍스트 인코딩 일종의 의미 "클래식 80"

+1

코드 스 니펫과 Python 버전이 여기에 모두 관련되어 있습니다. JSON 피드의 인코딩을 아는 경우 보너스 포인트입니다. – Triptych

+1

JSON은 유니 코드 인코딩, UTF-8, UTF-16 (BE 또는 LE) 또는 UTF-32 (BE 또는 LE) 중 하나에 있어야합니다. . 제작자가 대신 ISO-8859-1 또는 windows-1252로 보낼 수도 있습니다. 파일을 '잘못된'인코딩으로 읽고 구문 분석하기 전에 수정할 수 있습니다. – lavinio

답변

1

의 상징, 어떤 인코딩인지 알아 내고 thetext.decode ('encoding') 호출로 유니 코드로 변환해야합니다.

잘 모르겠지만 [?] 문자 일 수 있습니다. 즉, 거기에있는 디스플레이도 표시 방법을 알 수 없습니다. 이는 아마도 사용자가 가지고있는 데이터가 올바르지 않으며 거기에 사용하려고하는 인코딩에 존재하지 않는 문자가 있음을 의미합니다. 이를 처리하기 위해 thetext.decode ('encoding', 'ignore')와 같은 디코드를 호출합니다. ignore 이외에도 "replace", "xmlcharrefreplace"등의 옵션이 있습니다.

0

JSON은 UTF-8, UTF-16 또는 UTF-32 중 하나로 인코딩되어야합니다. JSON 파일에 현재 인코딩에서 불법 인 바이트가 포함되어 있으면 가비지입니다.

어떤 인코딩을 사용하는지 알지 못하는 경우 인코딩 탐지기가 포함 된 jsonlib 라이브러리를 사용하여 구문 분석을 시도 할 수 있습니다. jsonlib을 사용하여 구문 분석 된 JSON은 유니 코드 문자열로 프로그래머에게 제공되므로 인코딩에 대해 전혀 염려 할 필요가 없습니다.