Найти подстроку в строке
Пытаюсь понять, как решить достаточно тривиальную задачку в Python. Дана строка вида Текст без кавычек «Текст в кавычках». Мне нужно извлечь из неё только текст Текст в кавычках, отбросив кавычки.
Вероятно нужно применить регулярные выражения, но как именно построить конструкцию - понять нем могу.
Ответы (2 шт):
Можно так «(.*)». А потом модуль re в помощь.
Проверка этой регулярки https://regex101.com/r/F8Sur4/1
Скобки - спецсимволы, которые определяют начало и конец захватываемой группы. Точка - значит любой символ. Звездочка - любое количество символов от нуля до бесконечности, которые перед ней.
В итоге .* - значит совершенно произвольная последовательность символов. А если поместить ее в скобки, то она будет сохранена отдельно, например, функцией re.match.
Ну а кавычки - это кавычки.
Можете, если захочется БДСМ-а, сами написать механизм регулярных выражений. Иногда бывает весело)
s = 'Текст без кавычек «Текст в кавычках». Мама мыла раму «Ещё немного текста в кавычках». Чё-то ещё и «Сколько угодно текста в кавычках»'
result = []
status = 0
temp_string = ''
for letter in s:
if status == 0 and letter not in '«»':
continue
else:
if letter == '«':
status = 1
continue
elif letter == '»':
status = 0
result.append(temp_string)
temp_string = ''
continue
else:
temp_string += letter
print(result)