如何使用python

时间:2017-04-06 03:44:07

标签: python regex xml

我有一行xml,并希望将所有文本部分解析为文本列表。

text = '<string name="status">Finishing <xliff:g id="number">%d</xliff:g> percent.</string>'

我想要的输出:

desired_output = ['Finishing', '%d', 'percent.']

我使用正则表达式来完成这个简单的任务。

import re
pattern = re.compile(r'>.+<')
match = re.findall(pattern, text)

match = ['>Finishing <xliff:g id="number">%d</xliff:g> percent.<']

似乎正则表达式无法获得我想要的输出。

2 个答案:

答案 0 :(得分:0)

我不太了解Python,但我知道用正则表达式解析XML正在为pain的世界做好准备。尝试使用ElementTree代替这样的东西,在Python 2.7中进行测试:

import xml.etree.cElementTree as ElementTree
xml_text='<string name="status">Finishing <xliff:g id="number">%d</xliff:g> percent.</string>'
xml=ElementTree.fromstring('<data xmlns:xliff="foo">' + xml_text + '</data>')
print ElementTree.tostring(xml, method='text')

输出:

>>> Finishing %d percent.

请注意,因为XML中有一个命名空间,所以需要在文本周围放置一个包装器。如果您的实际XML已经声明了名称空间,则可以跳过它。

答案 1 :(得分:-1)

将您的正则表达式更新为此

 pattern = re.compile(r'. *?>(.+?)<')

如果您正在使用xml / html解析,您可以考虑使用Beautifulsoup,它会为您节省大量时间来编写更多正则表达式,但如果您想学习正则表达式,那么它将通过反复试验