2014-10-22 6 views
0

Я пытаюсь написать простой скрипт python, который будет искать подходящее слово, но только распечатать строку под совпадающим словом.Получение значения строки после сопоставления в Python

Мой XML содержит контент, как этот

<field name="some.title"> 
    <value>VALUE1</value> 
    </field> 
    <field name="some.otherTitle"> 
    <value>VALUE2</value> 
    </field> 
    <field name="MATCHING.Title"> 
    <value>VALUE3</value> 
    </field> 
    <field name="some.alternativeRandomTitle"> 
    <value>VALUE4</value> 
    </field> 

Я могу прочитать через вход и соответствует слово и распечатать его, но как бы я получить только значение ниже его? В этом примере я ищу MATCHING.Title, но хочу, чтобы VALUE3 печатался. Я искал вокруг, но у меня проблемы с работой.

for line in sys.stdin: 
    matching = re.search(r'<field name="MATCHING.Title">',line) 
    print matching.group() 
+0

использовать парсер –

+2

Возможно, модуль синтаксического анализа XML будет более подходящим, чем 're'. Тогда вы можете сделать '[field.value.text для поля в документе.find_all (" field "), если поле [" name "] ==" MATCHING.Title "]'. (это просто пример синтаксиса, он, вероятно, не будет выглядеть точно так) – Kevin

ответ

0

для всемогущего регулярных выражений ...

str1 = """ 
    <field name="some.title"> 
    <value>VALUE1</value> 
    </field> 
    <field name="some.otherTitle"> 
    <value>VALUE2</value> 
    </field> 
    <field name="MATCHING.Title"> 
    <value>VALUE3</value> 
    </field> 
    <field name="some.alternativeRandomTitle"> 
    <value>VALUE4</value> 
    </field> 
""" 

print re.search(r'<field name="MATCHING.Title">\s(.*)', str1).group(1) 
Смежные вопросы