#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))