0

我正在寻找包含不同字符串的列表中的模式:

names = ['TAATGH', 'GHHKLL', 'TGTHA', 'ATGTTKKKK', 'KLPPNF']

我想选择具有模式 'T--T' 的字符串(无论字符串如何开始),因此将选择这些元素并将其附加到新列表中:

namesSelected = ['TAATGH', 'ATGTTKKKK']

使用 grep 我可以:

grep "T[[:alpha:]]\{2\}T"

re python中是否有类似的模式?

谢谢你的帮助!

4

3 回答 3

3

我认为这很可能是您想要的:

re.search(r'T[A-Z]{2}T', inputString)

Python for 中的等价物[[:alpha:]][a-zA-Z]. 如果您希望允许小写字母,您可以在上面的代码片段中替换[A-Z]为。[a-zA-Z]

的文档re.search

于 2013-09-17T18:34:49.300 回答
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']
于 2013-09-17T18:43:14.137 回答
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:]]

于 2013-09-17T18:40:37.420 回答