我有一行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.<']
似乎正则表达式无法获得我想要的输出。
答案 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,它会为您节省大量时间来编写更多正则表达式,但如果您想学习正则表达式,那么它将通过反复试验