2016-02-04 4 views
2

У меня есть текстовый документ, который я читаю и очень длинный. Каждый текстовый документ преобразуется в одну строку. Эти документы имеют ярлыки в них с эмоциями и должны извлечь все это. У меня проблема с функцией re.findall в python, которая отлично работает при использовании со строками, но моя строка содержит специальные символы, поэтому я ничего не получаю. Для Ex:поиск строки между 2 подстроками

string = ['yeah i\'ll get her going and and after you\'re done with your survey and stuff (00)\n<TRIGGER AFFECT="SURPRISED" SCALE="MEDIUM">oh</TRIGGER> okay (01)\n<TRIGGER AFFECT="CONFUSED" SCALE="LOW">okay</TRIGGER> ] 

Я должен найти все слова/слова между <TRIGGER AFFECT="SURPRISED" SCALE="MEDIUM"> и </TRIGGER>.

match = re.findall("<TRIGGER AFFECT="SURPRISED" SCALE="MEDIUM"> (.*?) </TRIGGER>",i) 
print (match) 

он не работает, я предполагаю, что это что-то делать с < и ", если я использую тот же код с любой другой обычной строкой вместо этого он работает

+1

Вы процитировать проблемы, то '" 'внутри регулярного выражения заканчиваются строки. Вы должны использовать одиночные кавычки, чтобы окружить строку. – Barmar

+0

Кроме того, регулярное выражение имеет место после того, как'> ' , но входная строка не соответствует, поэтому она не будет соответствовать. – Barmar

+0

Считаете ли вы использование [NLTK] (http://www.nltk.org/)? –

ответ

4

Fix ваших котировок, и избавиться от пробелов в регулярном выражении, которые не имеют соответствия во входной строке. Также обычно рекомендуется использовать необработанную строку для регулярного выражения.

match = re.findall(r'<TRIGGER AFFECT="SURPRISED" SCALE="MEDIUM">(.*?)</TRIGGER>', i) 

DEMO

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