如何使用IN将多个字符串作为Python中的完全匹配进行比较?

时间:2017-11-29 13:19:14

标签: python

我有以下python代码:

p

print value in ("abc ver 1","abc ver 1.1") 时返回value="abc"。 如何使此比较仅针对TRUE而不是EXACT MATCH

返回true

我的Sub Strings包含40个字符串,更改它in (....)是不现实的。

如何强制into =='..' or == '..' or == '..'比较完全匹配字符串?

修改 基本上我想知道原因:

IN TRUE

print "abc" in ("abc d") FALSE

我只是不明白这种行为。

4 个答案:

答案 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

你的问题是错的!