Мне нужно вырезать строки из строки (XML-файл) и сохранить их в массиве

#python #xml #string #list #split

#python #xml #строка #Список #разделить

Вопрос:

у меня есть еще один вопрос относительно python. Мне нужно сохранить определенную строку XML-файла (строка появляется несколько раз в файле) в списке.

 def parse_xml(self):
    file_ = open("ErrorReactions_TestReport_20160831_165153.xml", "r")
    for line in file_:
        line.rstrip()
        if "result_str" in line:
            if line == "Skipped":
                "count how much test cases are skipped"
            elif  line == "Failed"
                "count how much test cases failed
            else:
                "count how much test cases passed"
  

Это мой код, моя проблема в том, что мне нужно сохранить строку за параметром result_str и проверить, совпадают ли они с «Пропущенными» или «Неудачными». Как мне сохранить эту строку в переменной?
Строки выглядят так:

< время вынесения вердикта =»1472654306.7″ result_str=»Передано» result=»2″> Генератор успешно запущен< / verdict> < время вынесения вердикта = «1472654306.7» result_str=»Пропущено» result=»0″ final=»True»> Генератор тестов не активен< / verdict>

Комментарии:

1. используйте синтаксический анализатор (ie lxml ) или регулярное выражение (ie. result_str="([^"]*)" )

2. или if "result_str="Skipped"" in line: result = "Skipped"

Ответ №1:

Регулярное выражение — один из многих способов сделать это. Я уверен, что есть отличные проверенные и проверенные анализаторы XML. Этот код будет печатать Passed :

 import re

line='''< verdict time="1472654306.7" result_str="Passed" result="2">Generator run successfully< /verdict> < verdict time="1472654306.7" result_str="Skipped" result="0" final="True">Testgenerator not active< /verdict>'''

p = re.compile(r'.*?result_str="(.*?)"')
match = p.match(line)
print(match.group(1))