我有以下python代码:
p
print value in ("abc ver 1","abc ver 1.1")
时返回value="abc"
。
如何使此比较仅针对TRUE
而不是EXACT MATCH
?
我的Sub Strings
包含40个字符串,更改它in (....)
是不现实的。
如何强制into =='..' or == '..' or == '..'
比较完全匹配字符串?
修改 基本上我想知道原因:
IN
TRUE
print "abc" in ("abc d")
FALSE
我只是不明白这种行为。
答案 0 :(得分:2)
你的问题是问为什么:
"abc" in ("abc d")
返回True
和:
"abc" in ("abc d","ab")
返回False
。
因为第一个表达式只是用括号括起来,所以它类似于:
"abc" in "abc d"
请注意,它不会作为元组,因为只有1个元素。
尽管
"abc" in ("abc d","ab")
使用("abc d","ab")
作为元组(因为逗号意味着多个元素),因此它会搜索匹配的元素。
答案 1 :(得分:1)
现在你改变了我将回复的问题:
编辑:基本上我想知道原因:
打印(“abc d”)中的“abc”为 TRUE
打印“abc”in(“abc d”,“ab”) FALSE
我只是不明白这种行为。
在第一种情况下,您正在检查您的字符串是否在另一个字符串("abc d")
内,等同于"abc d"
在第二种情况下,您正在检查您的字符串是否在字符串列表中,这意味着它必须完全匹配列表中的一个元素,与第一种情况完全不同。
答案 2 :(得分:0)
尝试:
print [value==x for x in ("abc ver 1","abc ver 1.1")]
<强>结果:强>
[False,False]
如果value='abc'
修改:更直接的答案:
您不能使用in
来比较完全匹配,它只测试“其他值”中的值是否与其完全相等
你可以用它测试长度(加法)
答案 3 :(得分:0)
您可以像这样使用any
:
any(x == value for x in ("abc ver 1","abc ver 1.1"))
使用python 2.7进行演示
>>> value = 'abc'
>>> any(x == value for x in ("abc ver 1","abc ver 1.1"))
False
>>> value = 'abc ver 1'
>>> any(x == value for x in ("abc ver 1","abc ver 1.1"))
True
修改强>
等一下!
>>> value = 'abc'
>>> print value in ("abc ver 1","abc ver 1.1")
False
你的问题是错的!