2013-04-04 3 views
0

Что было бы самым простым способом заменить подстроку в строке, когда я не знаю точной подстроки, которую я ищу, и знаю только строки с разделителями? Например, если у меня есть следующие: (.) ​​Самый простой способ заменить подстроку

mystr = 'wordone wordtwo "In quotes"."Another word"' 

Я в принципе хочу, чтобы удалить первые процитированные слова (включая кавычки) и период после так Результирующая строка:

'wordone wordtwo "Another word"' 

В основном я хочу удалить первые цитируемые слова и цитаты и следующий период.

ответ

3

Вы ищете регулярные выражения здесь, используя в re module:

import re 

quoted_plus_fullstop = re.compile(r'"[^"]+"\.') 
result = quoted_plus_fullstop.sub('', mystr) 

Узора буквальной котировки, а затем 1 или более символов, которые не являются кавычками, а затем другой цитатой и полной остановкой.

Демо:

>>> import re 
>>> mystr = 'wordone wordtwo "In quotes"."Another word"' 
>>> quoted_plus_fullstop = re.compile(r'"[^"]+"\.') 
>>> quoted_plus_fullstop.sub('', mystr) 
'wordone wordtwo "Another word"' 
+0

Да, но мне кажется, питон регулярные выражения работают немного по-другому, и я не эксперт регулярных выражений. Я также попытался сделать что-то вроде следующего: mystr [0: mystr.find ('' ', 1)] + mystr [mystr.find ('. ', 1) +1:] – GregH

+1

@GregH: Регулярные выражения являются правильными чтобы справиться с такими проблемами. Вам не обязательно быть экспертом, начинайте с предлагаемого здесь регулярного выражения и узнайте, почему он работает. Они очень полезны, поверьте, научиться выражать простые шаблоны окупятся. +1 для этого ответа – gonz

+0

он не сработает для вложенных кавычек (за которым следует период), хотя ... –

Смежные вопросы