Python非严格的字符串搜索文本

时间:2012-02-06 21:27:55

标签: python string

我试图看一个字符串是否包含某些文本,如果有的话,我一直在使用python的in运算符,但我意识到它太严格了,基本上我有以下代码

通常会返回True

dynamic = "v23434"
filename = "v23434.jpg"

if dynamic in filename: return True

然而,如果我有

dynamic = "v23434-"
filename = "v23434.jpg"

然后它返回False,因为dynamic末尾的破折号,所以我的问题是,有没有办法检查字符串文件名是否有字符串dynamic,但在某种程度上它不一定是完美的匹配,只需要几个字符即可。

修改

通过几个字符,我的意思是由动态的前3个字符组成的子字符串,所以如果我有

dynamic = "v23434-"
filename = "testingv23434.jpg"

然后它应该匹配,因为在"v23"

中找到了子串filename

4 个答案:

答案 0 :(得分:3)

如果您只想测试搜索字词中的前三个字符,请使用

def test(dynamic, filename):
    return dynamic[:3] in filename

答案 1 :(得分:1)

只需切掉一个字符串的前三个字符:

if dynamic[:3] in filename

答案 2 :(得分:1)

这段代码将帮助解决您的问题我正在寻找至少3个连续字符

>>> dynamic = "v23434-"
>>> filename = "testingv23434.jpg"
>>> any( s in filename for s in [ dynamic[i:i+3] for i in range( 0, len(dynamic)-2 ) ] )
True

>>> filename = "testingv334.jpg"
>>> any( s in filename for s in [ dynamic[i:i+3] for i in range( 0, len(dynamic)-2 ) ] )
False

答案 3 :(得分:0)