2016-08-09 2 views
-2

У меня есть строка в Python:Как удалить подстроки, отмеченные специальными символами из строки?

Tt = "This is a <\"string\">string, It should be <\"changed\">changed to <\"a\">a nummber." 

print Tt 

'This is a <"string">string, It should be <"changed">changed to <"a">a nummber.' 

Вы видите некоторые слова повторяются в этой части <\" \">.

Мой вопрос, как удалить эти повторяющиеся части (разграниченные с названными символами)?

Результат должен быть, как:

'This is a string, It should be changed to a nummber.' 
+3

показать нам свой код. – Julien

+0

Обмен с нами методами, которые вы уже пробовали, - отличный способ выразить трудности, с которыми вы сталкиваетесь. Мы можем решить конкретные проблемы ваших проблем, которые являются проблематичными. – Lix

+1

Давай! Вы можете придумать лучший титул. –

ответ

5

Использование регулярных выражений:

import re 
Tt = re.sub('<\".*?\">', '', Tt) 

Обратите внимание на ? после *. Он делает выражение неживым, , поэтому он пытается совместить так мало символов между <\" и \">, насколько это возможно.

Решение Джеймс будет работать только в тех случаях, когда разграничивающие подстроки состоят только из одного символа (< и >). В этом случае можно использовать отрицания, такие как [^>]. Если вы хотите удалить подстроку, ограниченную последовательностями символов (например, с помощью begin и end), вы должны использовать нежелательные регулярные выражения (то есть .*?).

1

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

import re 
Tt = "This is a <\"string\">string, It should be <\"changed\">changed to <\"a\">a number." 
print re.sub("<[^<]+>","",Tt) 
#Out: This is a string, It should be changed to a nummber. 

Ah - подобный пост Игоря, он бил себя по немного. Вместо того, чтобы сделать выражение неживым, я не согласую выражение, если оно содержит в нем еще один начальный тег «<», поэтому он будет соответствовать только тегу start, за которым следует конечный тег «>».

+0

@James: Я написал небольшое обновление к моему ответу относительно того, почему или когда лучше использовать неприличные регулярные выражения. –

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