在Python中使用if和split()进行字符串匹配

时间:2017-05-10 14:04:51

标签: python regex string

全部,

有人可以解释为什么第二个代码没有返回True吗?

第一个代码

if 'geeta' in 'geetansh':
    print ("True")
else:
    print ("False")

输出:True

第二段代码

if 'geeta' in 'geetansh'.split():  
    print ("True")
else:
    print ("False")

输出:False

导致此不匹配的'geetansh'(列表)和'geetansh'.split()(数组)之间的这种特殊区别是什么?

4 个答案:

答案 0 :(得分:3)

' geetansh'是python中的一个字符串。 所以

--with-thread-safety

检查字符串' geetansh'包含字符串' geeta'。

另一方面,' geetansh' .split()是python中的列表。 split()返回一个列表,所以' geetanch' .split()返回[' geetansh']。 所以

if 'geeta' in 'geetansh':

检查列表[' geetansh']是否包含项目' geeta'。列表[' geetansh']仅包含' geetansh'。

答案 1 :(得分:0)

基本区别在于,str.split()返回一个列表!

比较a in b时,比较就像,

  • b是一个列表,然后必须是b中的项目。
  • b是一个字符串,然后a的一部分在b

即,

>>> 'geeta' in 'geetansh'
True
>>> 'geeta' in 'geetansh'.split()
False
>>> print 'geetansh'.split()
['geetansh']
>>> print type('geetansh'.split())
<type 'list'>
>>> print type('geetansh')
<type 'str'>

答案 2 :(得分:0)

split()方法返回一个数组

'geetansh'.split() #return an array ['geetansh']

请改用:

if 'geeta' in 'geetansh'.split()[0]:
    print ("True")
else:
    print ("False")

答案 3 :(得分:0)

'geetansh'.split()会返回一个列表['geetansh'],因此它实际上并不包含'geeta'