a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
发布于 2009-12-30 16:42:09
在Python 3.0之前的版本中,有两种字符串“普通字符串”和"unicode字符串“。普通字符串(str
)不能表示拉丁字母以外的字符(为简单起见,请忽略代码页的详细信息)。Unicode字符串(unicode
)可以表示任何字母表中的字符,包括一些虚构的字符,如克林贡语。
那么为什么有两种类型的字符串,只有Unicode不是更好吗,因为它可以涵盖所有情况?当然,最好只使用Unicode,但是Python是在Unicode成为表示字符串的首选方法之前创建的。在有很多用户的语言中转换字符串类型是需要时间的,在Python3.0中,最终所有字符串都是Unicode。
Python字符串3.0之前版本的继承层次结构是:
object
|
|
basestring
/ \
/ \
str unicode
Python2.3中引入的‘'basestring’可以被看作是统一字符串方向的一步,因为它可以用来检查一个对象是str
还是unicode
的实例
>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True
发布于 2009-12-30 16:05:41
所有字符串都是基字符串,但unicode字符串不是str类型。试着这样做:
>>> a=u'aaaa'
>>> print isinstance(a, basestring)
True
>>> print isinstance(a, str)
False
发布于 2009-12-30 16:07:13
实际上,您要问的是basestring和str类之间的区别。
Str是一个继承自basestr的类。但是unicode字符串也存在,就像其他字符串一样,如果您想创建一个这样的字符串。
>>> a = u'aaaa'
>>> isinstance(a, str)
False
>>> isinstance(a, basestring)
True
https://stackoverflow.com/questions/1979004
复制相似问题