如何检查某个东西是列表、字典还是字符串?

你好,
如何检查某物是列表还是字典或仅仅是字符串?
例如:
对于self .__ libverdict.itervalues():
self.cbanalalysislibversion(结束,项目)
__ libverdict是一个字典,其值为字符串或
列表.所以现在,当我迭代这个词典时,我想检查是否是否
该项目是列表还是字符串?
谢谢,
拉贾特

# 回答1


8月29日,9:16*am,dudeja.ra ...@gmail.com写道:
type(),您可能还想导入类型库.
在[1]中:导入类型
在[2]:a = {1:{},false:[],'yes':false,none:'Hello'}
在[3]中:a.values()
out [3]:[[],{},false,'Hello']
在[4]中:[a.itervalues()中的项目类型(item)]
out [4]:[,,,]
在[6]中:对于a.itervalues()中的项目:
...:如果类型是类型.BooleanType:
...:打印"布尔值",项目
...:elif type(item)是type.listtype:
...:打印"列表",项目
...:elif type(item)是type.stringtype:
...:打印"字符串",项目
...: 别的:
...:打印"其他类型",类型(item),':',item
...:
...:
列表 []
其他类型 布尔值
字符串Hello
# 回答2


8月29日,下午12:16,dudeja.ra ...@gmail.com写道:
如果是isInstance(项目,固定):
#这是一个字符串
...
else:#应该是列表
#通常您不必明确检查它;
#即使不是列表,它也会稍后再引起例外
如果您调用特定于列表的方法
hth,
乔治
# 回答3


乔治·萨基斯(George Sakkis)写道:
如果是isInstance(项目,固定):
#这是一个字符串
...
else:#应该是列表
#通常您不必明确检查它;
#即使不是列表,它也会稍后再引起例外
如果您调用特定于列表的方法
hth,
乔治
有关更多解释,请参见例如http://evanjones.ca/python-utf8.html
(引用)
使用Unicode字符串
值得庆幸的是,Python中的所有内容都应该处理Unicode Strings
与字节字符串相同.但是,您需要自己小心
测试时代码查看对象是否为字符串.不要这样做:
如果Isinstance(s,str):#bad:对于Unicode字符串而言是不正确的!
相反,使用通用字符串基类,固定:
如果是isinstance(s,stasestring):#to n niCode和byte字符串
# 回答4


但是这随Python 3的变化而改变,对吗?
8月30日,7:15*上午,肯·史塔克斯(Ken Starks) 有关更多解释,请参见例如http://evanjones.ca/python-utf8.html
(引用)
使用Unicode字符串
值得庆幸的是,Python中的所有内容都应该处理Unicode Strings
与字节字符串相同.但是,您需要自己小心
测试时代码查看对象是否为字符串.不要这样做:
如果Isinstance(s,str):#bad:对于Unicode字符串而言是不正确的!
相反,使用通用字符串基类,固定:
如果是isInstance(s,stasestring):#the to n niCode和byte字符串
# 回答5

乔什·洛根(Josh Logan)写道:
正确的!
请参阅http://docs.python.org/dev/3.0/whatsnew/3.0.html
(引用)
字符串和字节
*只有一种字符串类型;它的名字叫str,但行为
实现就像2.x中的Unicode一样.
*已删除了固定的超类. 2to3工具
用str代替每次固定的情况.
* PEP 3137:有一个新类型,字节代表二进制数据
(和编码文本,该文本被视为二进制数据,直到您决定
解码). Str和字节类型不能混合;你必须永远
使用str.encode()(str -bytes)明确转换它们之间
或bytes.decode()(bytes -str)方法.
*原始字符串中的所有后斜线都是从字面上解释的.这个
意味着Unicode Escapes不受特殊处理.
* PEP 3112:字母文字,例如b" ABC",创建字节实例.
* PEP 3120:UTF-8默认源编码.
* PEP 3131:非ASCII标识符. (但是,标准库
除了评论中的贡献者名称外,仅限于ASCII.)
* PEP 3116:新的I/O实施. API接近100%
向后兼容,但完全重新完成(目前主要是
Python).另外,二进制文件使用字节代替字符串.
* Stringio和Cstringio模块消失了.而是导入
io.stringio或io.bytesio.
*'\ u'和'\ u'在原始字符串中没有特别处理.
有关更多的解释,请参见例如http://evanjones.ca/python-utf8.html(Quote)与Unicode stringsthank一起工作,Python中的所有内容都应该将Unicode strings strings缩写为字节字符串.但是,在测试时,您需要在ownscode中小心,以查看对象是否为字符串.请勿这样做:如果Isinstance(S,Str):#bad:对于Unicode字符串而不是正确!而不是the!而不是使用通用的字符串base class,assestring:if isinstance(s,basestring):#对于Unicode和byte strings n os true
# 回答6

dutexhydedeyde@gmail.com写道:
您确定这是您想做的还是要确保
"某事"是一个雄辩.如果某人通过发电机或班级通过
实例是可以的,您真的想失败吗?
-larry

标签: python

添加新评论