如何在python中搜索字符串中是否出现子字符串(包括部分匹配项)?

时间:2019-03-28 10:47:16

标签: python python-3.x

我正在尝试编写一个程序,该程序将搜索一系列字符串,如果找到子字符串的任何部分,则返回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。

3 个答案:

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