2011-02-03 7 views
0

エンコードされた文字列に使用されるエンコーディングのタイプを知ることができるのだろうか?少なくとも、特定のエンティティまたは単語がpython3.xの文字列かバイトであるかを調べる。 ありがとうございます。エンコードのタイプを見つける

答えて

3

chardetは、それがどのエンコードであるかを推測させます。しかし、これは短いテキストでは信頼性が高くありませんが、長いテキストではうまくいきます。

+0

このテストが動作するようになって、私は次のように動作しないことを示していると考えているかわからない: >>>タイプ(x)の >>>でisinstance(X、バイト) 真 >> > isinstance(x、str) True – kasterma

+1

@kasterma:これは、Python 2ではstrとbytesが同じ型であるからです。これはPython 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} 

そして、そこだけでなく、そのページに覆われている、より複雑なユースケースがありますが、コアであなたは、単に文字列を渡すと、それは潜在的なエンコーディングのセットを返すことができますその推測に彼らの信頼と一緒に。

isinstance(x, bytes) 

isinstance(x, str) 

をあなたはダニエルが彼の答えの使用に言ったように、それは、あなたができるバイト、であると判断したら:それは文字列だか、バイトは簡単ですかどうかを確認するには

関連する問題