检查特定字符串是否出现在另一个字符串中

时间:2013-05-27 17:37:35

标签: python debugging

我在website上练习我的python编码。这是问题

Return True if the given string contains an appearance of "xyz" where the xyz is 
not directly preceeded by a period (.). So "xxyz" counts but "x.xyz" does not. 

xyz_there('abcxyz') → True
xyz_there('abc.xyz') → False
xyz_there('xyz.abc') → True

这是我的代码,由于某些未知原因,我没有通过所有的测试用例。我在调试时遇到问题

def xyz_there(str):

    counter = str.count(".xyz")
    if ( counter > 0 ):
        return False
    else:
        return True

2 个答案:

答案 0 :(得分:4)

网站似乎不允许import,所以最简单的可能是:

'xyz' in test.replace('.xyz', '')

否则,您可以在断言后使用带有负面外观的正则表达式:

import re

tests = ['abcxyz', 'abc.xyz', 'xyz.abc']
for test in tests:
    res = re.search(r'(?<!\.)xyz', test)
    print test, bool(res)

#abcxyz True
#abc.xyz False
#xyz.abc True

答案 1 :(得分:3)

查看xyz是否属于.xyz的一种方法是计算xyz的数量,计算.xyz的数量,然后看看是否有更多的第一个而不是第二个。例如:

def xyz_there(s):
    return s.count("xyz") > s.count(".xyz")

通过了网站上的所有测试。