我在包含不同字符串的列表中寻找模式:
names = ['TAATGH', 'GHHKLL', 'TGTHA', 'ATGTTKKKK', 'KLPPNF']
我想选择具有模式'T-T'的字符串(无论字符串如何开始),因此将选择这些元素并将其附加到新列表中:
namesSelected = ['TAATGH', 'ATGTTKKKK']
使用grep我可以:
grep "T[[:alpha:]]\{2\}T"
re python中是否有类似的模式?
感谢您的帮助!
答案 0 :(得分:3)
我认为这很可能是你想要的:
re.search(r'T[A-Z]{2}T', inputString)
Python中[[:alpha:]]
的等价物将是[a-zA-Z]
。如果您希望允许使用小写字母,则可以在上面的代码段中将[A-Z]
替换为[a-zA-Z]
。
re.search
的文档。
答案 1 :(得分:0)
import re
def grep(l, pattern):
r = re.compile(pattern)
return [_ for _ in l if r.search(pattern)]
nameSelected = grep(names, "T\w{2}T")
请注意使用\w
代替[[:alpha:]]
答案 2 :(得分:0)
是的,您可以使用re.search
:
>>> names = ['TAATGH', 'GHHKLL', 'TGTHA', 'ATGTTKKKK', 'KLPPNF']
>>> reslist = []
>>> for i in names:
... res = re.search(r'T[A-Z]{2}T', i)
... if res:
... reslist.append(i)
...
>>>
>>> print(reslist)
['TAATGH', 'ATGTTKKKK']