2011-02-03 2 views
0

인코딩 된 문자열에 사용 된 인코딩 유형을 찾을 수 있는지 궁금합니다. 적어도 특정 엔티티 또는 단어가 python3.x의 문자열 또는 바이트인지 확인하십시오. 미리 감사드립니다. 인코딩 유형 찾기

답변

3

확인하려면 간단하다 :

isinstance(x, str) 

다니엘은 그의 대답 사용했다 당신이 그 다음 당신이 할 수있는, 바이트 것으로 확인되면

isinstance(x, bytes) 

chardet은 인코딩이 무엇인지 짐작하게합니다. 짧은 텍스트에서는 매우 신뢰할 수 없지만 긴 텍스트에서는 정상적으로 작동합니다.

+0

이 테스트가 작동하는데,하지만 난 다음이 작동하지 않습니다 그것을 보여줍니다 생각하는 방법을 확실하지 : >>> 유형 (x)의 >>> isinstance (X, 바이트) 진정한 >> > isinstance (x, str) True – kasterma

+1

@kasterma : 파이썬 2에서는 str과 bytes가 같은 타입이기 때문이다. 파이썬 3에서는 그렇지 않습니다. –

8

chardet 라이브러리를 권하고 싶습니다. 그것은 some work from Mozilla을 기반으로하며 필요를 충족하는 것 같습니다.

Usage is pretty easy :

>>> import urllib 
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read() 
>>> import chardet 
>>> chardet.detect(rawdata) 
{'encoding': 'EUC-JP', 'confidence': 0.99} 

그리고 거기뿐만 아니라 해당 페이지에 적용됩니다 더 복잡한 사용 사례가 있지만, 핵심은 단순히 문자열에 전달할 수 있으며,이는 잠재적 인 인코딩의 집합을 반환 그 추측에 그들의 신뢰와 함께. 이 문자열의 또는 바이트 경우

관련 문제