Цикл с регулярным выражением (Python), добавляемый после совпадения в список - PullRequest
2 голосов
/ 07 марта 2020

Итак, я пытаюсь добавить каждое совпадение строки в список с помощью регулярного выражения. Так вот мой код. Это только не работает (должным образом), к сожалению.

seq = 'ABABABBBASHDBDHBEHDBEDH'
Empty_list = []
regex_ex = re.finditer(r'.{3}', seq)
for x in regex_ex:
    Empty_list.append(x)

Ответы [ 2 ]

1 голос
/ 07 марта 2020

, чтобы получить доступ к значению вашего совпадения, вы должны использовать re.Match.group метод:

for x in regex_ex:
    Empty_list.append(x.group())

вы можете заменить код for l oop списком понимание:

Empty_list = [x.group() for x in  re.finditer(r'.{3}', seq)]
print(Empty_list)

вывод:

['ABA', 'BAB', 'BBA', 'SHD', 'BDH', 'BEH', 'DBE']

, если вы хотите более компактный код:

list(map(re.Match.group, re.finditer(r'.{3}', seq)))

вывод:

['ABA', 'BAB', 'BBA', 'SHD', 'BDH', 'BEH', 'DBE']
1 голос
/ 07 марта 2020

Вы сохраняете объект соответствия вместо совпадающей строки:

seq = 'ABABABBBASHDBDHBEHDBEDH'
Empty_list = []
regex_ex = re.finditer(r'.{3}', seq)
for x in regex_ex:
    Empty_list.append(x.group(0)) # saves matched string
print(Empty_list)

Вывод:

['ABA', 'BAB', 'BBA', 'SHD' , 'BDH', 'BEH', 'DBE']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...