我必须在Python中做什么来找出字符串的编码?
当前回答
对于py2/py3兼容性,只需使用
进口六 如果isinstance(obj, six.text_type)
其他回答
在python3中,所有字符串都是Unicode字符的序列。有一种bytes类型保存原始字节。
在python2中,字符串的类型可以是str或unicode。你可以用如下代码来区分:
def whatisthis(s):
if isinstance(s, str):
print "ordinary string"
elif isinstance(s, unicode):
print "unicode string"
else:
print "not a string"
这并不区分“Unicode或ASCII”;它只区分Python类型。Unicode字符串可以由ASCII范围内的纯字符组成,字节字符串可以包含ASCII、编码的Unicode,甚至是非文本数据。
一种简单的方法是检查unicode是否是内置函数。如果是,你在python2中,你的字符串将是一个字符串。要确保所有内容都使用unicode,可以执行以下操作:
import builtins
i = 'cats'
if 'unicode' in dir(builtins): # True in python 2, False in 3
i = unicode(i)
use:
import six
if isinstance(obj, six.text_type)
在六个库中,它被表示为:
if PY3:
string_types = str,
else:
string_types = basestring,
您可以使用通用编码检测器,但请注意,它只会给您最好的猜测,而不是实际的编码,因为不可能知道字符串“abc”的编码。您将需要在其他地方获取编码信息,例如HTTP协议使用内容类型报头。
对于py2/py3兼容性,只需使用
进口六 如果isinstance(obj, six.text_type)
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录