найти все следующие значения из списка при нахождении подстроки начиная со второго совпадения

str_1 = ['hdi', 'quy', 'f', 'hdi', 'djk', '4', 'hdi', '3','hdi']
str_2 = 'hdi'
secondPos = str_1.index(str_2, str_1.index(str_2) + len(str_2), 
len(str_1))
print(str_1[secondPos - 1:secondPos])

программа должна вывести f43, сейчас прога находит только второе совпадения - как сделать чтоб находила все начиная со второго совпадения ?


Ответы (1 шт):

Автор решения: Константин Комиссаров

Можно сначала разделить строку на список по разделителю `hdi', а потом взять последюю букву из каждой части, если она есть:

str_1 = 'hdiquyqgeorgfquegfhdidjkfhgjhdfqiewf8234fhioh3f49f234hdijdblqclecqec23hdi'
sep = 'hdi'

result = ''.join([part[-1] for part in str_1.split(sep) if part])
print(result)

Второй способ - использовать регулярные выражения:

import re

str_1 = 'hdiquyqgeorgfquegfhdidjkfhgjhdfqiewf8234fhioh3f49f234hdijdblqclecqec23hdi'

result = ''.join(re.findall(r'(.)hdi', str_1))
print(result)

P.S. Ваш вопрос очень непонятно сформулирован. Вы хотели найти один символ перед каждым вхождением и объединить все найденные символы в общую строку.

→ Ссылка