a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
返回True
type(a) in [str, unicode]
返回True
-5
所以,
您有很多选项可以检查您的变量是否为字符串:
a = "my string"
type(a) == str # first
a.__class__ == str # second
isinstance(a, str) # third
str(a) == a # forth
type(a) == type('') # fifth
此订单是出于有目的 .
4
以下是我支持Python 2和Python 3以及这些要求的答案:
使用最少的Py2 compat代码用Py3代码编写 .
稍后删除Py2 compat代码而不会中断 . 即目标只是删除,不修改Py3代码 .
避免使用 six 或类似的compat模块,因为它们往往会隐藏试图实现的内容 .
潜在的Py4的未来证明 .
import sys
PY2 = sys.version_info.major == 2
# Check if string (lenient for byte-strings on Py2):
isinstance('abc', basestring if PY2 else str)
# Check if strictly a string (unicode-string):
isinstance('abc', unicode if PY2 else str)
# Check if either string (unicode-string) or byte-string:
isinstance('abc', basestring if PY2 else (str, bytes))
# Check for byte-string (Py3 and Py2.7):
isinstance('abc', bytes)
23 回答
在Python 2.x中,你会这样做
basestring
是str
和unicode
的abstract superclass . 它可用于测试对象是str
还是unicode
的实例 .在Python 3.x中,正确的测试是
bytes
类在Python 3中不被视为字符串类型 .我知道这是一个古老的话题,但是作为Google上显示的第一个主题并且鉴于我没有找到任何令人满意的答案,我将留在此处以供将来参考:
six是一个Python 2和3兼容库,已经涵盖了这个问题 . 然后你可以做这样的事情:
检查代码,这是你发现的:
在Python 3.x或Python 2.7.6中
如果您检查的不仅仅是整数和字符串,那么类型模块也存在 . http://docs.python.org/library/types.html
根据以下更好的答案进行编辑 . 下来大约3个答案,找出basetring的凉爽 .
旧答案:注意unicode字符串,您可以从多个地方获取,包括Windows中的所有COM调用 .
你可以做:
要么:
希望这可以帮助!
由于
basestring
未在Python3中定义,因此这个小技巧可能有助于使代码兼容:之后,您可以在Python2和Python3上运行以下测试
另外我想要注意,如果要检查变量的类型是否是特定类型,可以将变量的类型与已知对象的类型进行比较 .
对于字符串,您可以使用它
其他人在这里提供了很多好的建议,但我没有看到一个好的跨平台总结 . 以下应该适用于任何Python程序:
在这个函数中,我们使用
isinstance(object, classinfo)
来查看我们的输入是Python 3中的str
还是Python 2中的basestring
.Python 2/3包括unicode
http://python-future.org/overview.html
Python 2的替代方法,不使用basetring:
但是仍然不能在Python 3中工作,因为没有定义
unicode
(在Python 3中) .返回True
返回True
所以,
您有很多选项可以检查您的变量是否为字符串:
此订单是出于有目的 .
以下是我支持Python 2和Python 3以及这些要求的答案:
使用最少的Py2 compat代码用Py3代码编写 .
稍后删除Py2 compat代码而不会中断 . 即目标只是删除,不修改Py3代码 .
避免使用
six
或类似的compat模块,因为它们往往会隐藏试图实现的内容 .潜在的Py4的未来证明 .
要测试myvar是否为字符串,也可以使用:
如果您不想依赖外部库,这适用于Python 2.7和Python 3(http://ideone.com/uB4Kdc):
您可以简单地使用isinstance函数来确保输入数据是格式字符串或unicode . 以下示例将帮助您轻松理解 .
我是这样做的:
我见过:
要测试myvar是否为字符串,请使用以下命令: