在没有 Etree 的情况下提取 XML 键的字符串/值
Posted
技术标签:
【中文标题】在没有 Etree 的情况下提取 XML 键的字符串/值【英文标题】:Extract String/Value of XML Key Without Etree 【发布时间】:2018-03-31 12:13:38 【问题描述】:我需要从 xml 文件中提取字符串,但不使用 etree。
XML 的一小部分:
<key>FDisplayName</key>
<string>Dripo</string>
<key>CFBundleIdentifier</key>
<string>com.getdripo.dripo</string>
<key>DTXcode</key>
假设我想提取com.getdripo.dripo
,我怎么能这样做,但不使用etree?
我只知道如何用etree来做,但是在这种情况下我不能使用它。
在网上找不到任何东西,有什么想法吗?
【问题讨论】:
... 自己编写一个完整的 XML 解析器?还是使用常规字符串函数?顺便问一下,etree
有什么问题?
@usr2564301 我在安装模块时遇到问题(在 ios 上)
@mhawke 哦,是的。 Python 2.7.8
你在 iOS 上使用什么 Python,Pythonista?它应该在标准库中有etree
。还有其他解析器如xml.dom.minidom
。
【参考方案1】:
使用正则表达式。
import re
s = """<key>FDisplayName</key>
<string>Dripo</string>
<key>CFBundleIdentifier</key>
<string>com.getdripo.dripo</string>
<key>DTXcode</key>"""
print re.findall("<string>(.*?)</string>", s) #finds all content between '<string>' tag
print re.findall("<string>(com.*?)</string>", s)
输出:
['Dripo', 'com.getdripo.dripo']
['com.getdripo.dripo']
注意:强烈建议使用 XML 解析器。
【讨论】:
以上是关于在没有 Etree 的情况下提取 XML 键的字符串/值的主要内容,如果未能解决你的问题,请参考以下文章
Unicode 字符串的 lxml.etree.XML ValueError