如何检查Python对象是否为字符串(常规或Unicode)?
当前回答
我认为可以安全地假设,如果repr()输出的最后一个字符是'或',那么无论它是什么,它都可以被认为是某种字符串。
def isStr(o):
return repr(o)[-1] in '\'"'
我假设repr不会做任何太繁重的事情,它会返回一个至少有一个字符的字符串。您可以使用类似的方法来支持空字符串
repr(o)[-1:].replace('"', "'") == "'"
但这仍然假设repr返回一个字符串。
其他回答
我发现这句话更夸张:
if type(aObject) is str:
#do your stuff here
pass
由于类型对象是单例的,is可以用来比较对象和STR类型
Python 2和3
(cross-compatible)
如果你想检查不考虑Python版本(2。x vs . 3.x),使用six (PyPI)及其string_types属性:
import six
if isinstance(obj, six.string_types):
print('obj is a string!')
在六个(一个非常轻量级的单文件模块)中,它只是这样做的:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str
else:
string_types = basestring
if type(varA) == str or type(varB) == str:
print 'string involved'
从 EDX -在线课程 MITx: 6.00.1x使用Python的计算机科学和编程介绍
我认为可以安全地假设,如果repr()输出的最后一个字符是'或',那么无论它是什么,它都可以被认为是某种字符串。
def isStr(o):
return repr(o)[-1] in '\'"'
我假设repr不会做任何太繁重的事情,它会返回一个至少有一个字符的字符串。您可以使用类似的方法来支持空字符串
repr(o)[-1:].replace('"', "'") == "'"
但这仍然假设repr返回一个字符串。
它很简单,使用以下代码(我们假设提到的对象是obj)-
if type(obj) == str:
print('It is a string')
else:
print('It is not a string.')
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- Printf与std::字符串?
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if