найти все следующие значения из списка при нахождении подстроки начиная со второго совпадения
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. Ваш вопрос очень непонятно сформулирован. Вы хотели найти один символ перед каждым вхождением и объединить все найденные символы в общую строку.