我正在尝试编写一个程序,该程序将搜索一系列字符串,如果找到子字符串的任何部分,则返回true。
例如,说我感兴趣的子字符串是:
GATCGATC
程序应针对以下情况返回True:
GGTGGATCGATC
并且还应返回true(因为它以GATC结尾):
GGTGTTTTGATC
到目前为止,我有:
def matchpat(str1, str2):
'''Find a pattern in a string'''
if str1 in str2:
return True
else:
return False
此函数有效,但仅当存在整个模式时,对于部分匹配,它将返回False。
答案 0 :(得分:2)
嗨,我将此代码设为有效。 您可以使用变量将其更改为更具动态性
text = 'GGTGGATCGATC'
lookingFor = 'GATCGATC'
def method():
print('in check')
if lookingFor in text:
return true
else:
return false
def main():
method()
if __name__ == "__main__":
如果要让方法接受输入,可以在方法定义中传递它:
def method(text, lookingFor)
答案 1 :(得分:0)
我使用了一个名为Fuzzywuzzy的库来解决类似的问题,该库可以很好地满足我的要求,并且可能会有所帮助。
它使用Levenshtein distance度量标准来比较字符串。
答案 2 :(得分:0)
您可以使用re module来完成
import re
patterntomatch = "GATCGATC"
patterntomatch = "[{0}]".format(patterntomatch)
TextTomatch = "This is something"
matchObj = re.match(patterntomatch,TextTomatch,re.I)
if matchObj:
print ("match found")
else:
print("no match found")