'str'和'str'的不支持的操作数类型。蟒蛇

时间:2012-06-12 04:24:50

标签: python

我有IF声明;

if contactstring == "['Practice Address Not Available']" | contactstring == "['']":

我不确定会出现什么问题(可能是“?”?)但我一直收到标题中提到的错误。

我已经查看了其他问题以寻找答案,但所有这些问题似乎都是关于在字符串上使用数学运算,而这并非如此。我知道这个问题有点懒,但是我整天都在编码而且我已经筋疲力尽了,我只是想快速解决这个问题。(Python newb)

3 个答案:

答案 0 :(得分:11)

|是Python中的按位或运算符,并且具有优先级,因此Python将其解析为:

if contactstring == (""['Practice Address Not Available']"" | contactstring) == "['']":

这会产生您看到的错误。

你想要的是一个逻辑或运算符,它在Python中拼写为'或':

if contactstring == ""['Practice Address Not Available']"" or contactstring == "['']":

会做你所期望的。但是,由于您将同一个变量与一系列值进行比较,因此效果会更好:

 if contactstring in ("['Practice Address Not Available']", ['']):

答案 1 :(得分:3)

|按位 operator,它不适用于字符串......

使用or(布尔逻辑运算符)将产生更好的结果。

答案 2 :(得分:2)

这里的问题是按位或运算符|。在布尔上下文中通常可以正常工作,但|的优先级高于==,因此Python首先尝试评估"['Practice Address Not Available']" | contactstring。这两个操作数都是字符串,你不能按位或两个字符串。使用更正确的or可以避免此问题,因为它的优先级低于==