2011-02-03 218 views
0

我想知道如果我们能找出用于编码字符串的编码类型吗?或者至少查明给定的实体或单词是否是python3.x中的字符串或字节。 在此先感谢。寻找编码的类型

回答

3

要了解它的字符串或字节很简单:

isinstance(x, str) 

VS

isinstance(x, bytes) 

一旦你确定它是一个字节,那么你就可以像丹尼尔在他的回答使用说chardet让它猜猜它是什么编码。尽管在短文本中这是非常不可靠的,但是在较长的文本中它工作正常。

+0

不知道这个测试是如何工作的,但我认为下面显示它不工作: >>>式(X) >>> isinstance(X,字节) 真 >> > isinstance(x,str) True – kasterma 2011-06-06 07:31:28

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} 

而且有被覆盖在该网页上,以及更复杂的使用情况,但在核心,你可以简单地传递一个字符串,并使其返回一组潜在编码的以及他们对这种猜测的信心。