如果type不是字符串不能正常工作

Bio*_*ock 0 python python-3.x

我正在使用列表:

text = ['package1:', 'package2:', 'package1,', ['package2', 'package4'], 'package3:', ['package2', 'package1,'], ['package3', 'package10,'], 'package60']
Run Code Online (Sandbox Code Playgroud)

我想做的是一方面处理字符串,另一方面处理子列表.

如果我写:

for i in range(len(text)):
    print(type(text[i]))
    if text[i] != str:
        print(text[i],'Not String')
    else:
        print(text[i],'String')
Run Code Online (Sandbox Code Playgroud)

输出如下

<class 'str'>
package1: Not String
<class 'str'>
package2: Not String
<class 'str'>
package1, Not String
<class 'list'>
['package2', 'package4'] Not String
<class 'str'>
package3: Not String
<class 'list'>
['package2', 'package1,'] Not String
<class 'list'>
['package3', 'package10,'] Not String
<class 'str'>
package60 Not String
Run Code Online (Sandbox Code Playgroud)

哪个不正确,因为package1:实际上是一个字符串.

我的错误在哪里?

pok*_*oke 6

print(type(text[i]))
if text[i] != str:
Run Code Online (Sandbox Code Playgroud)

您打印type(text[i])(类型)但正在比较text[i](值)与类型.所以当然你最终得到的结果似乎毫无意义.只需比较类型,str它将起作用.

话虽这么说,检查类型的推荐方法是使用isinstance:

if isinstance(text[i], str):
    print(text[i], 'String')
else:
    print(text[i], 'Not String')
Run Code Online (Sandbox Code Playgroud)