[英]Parsing XML file in PYTHON with different format
我给出了一个 XML 文件,尝试使用以下代码在 Python 中读取它:
import xml.etree.ElementTree as ETree
parser = ETree.XMLParser(encoding="utf-8")
tree = ETree.parse("real.xml", parser=parser)
我收到错误消息,因此我尝试在 Notepad++ 中打开 XML,并注意到该文件并非完全采用 XML 格式:
> b'<?xml version="1.0" encoding="UTF-8" ?><root><id type="dict"><n123
> type="int">52</n123><n124 type="int">81</n124><n125
> type="int">22</n125><n126 type="int">94</n126><n127
> type="int">42</n127><n128 type="int">54</n128><n129
> type="int">94</n129><n130 type="int">34703</n130><n131
> type="int">20 .........
</n141><n142 type="int">1</n142><n143
> type="int">2</n143></root>'
上面是给出的 XML 示例,我应该如何在 python 中处理它。
试试这个库。
真实文件
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<id type="dict">
<n52383 type="int">52</n52383><n80958 type="int">81</n80958><n21669 type="int">22</n21669>
</id>
<address type=''dict''>
<n52383 type="str">292 Lennox Street</n52383><n80958 type="str">72 Jones Road</n80958> ...........
</address>
</root>
例子
from simplified_scrapy import SimplifiedDoc, utils
xml = utils.getFileContent('real.xml')
doc = SimplifiedDoc(xml)
ids = doc.select('id').children
print([(id.tag,id['type'],id.text) for id in ids])
addresses = doc.select('address').children
print([(addr.tag,addr['type'],addr.text) for addr in addresses])
结果:
[('n52383', 'int', '52'), ('n80958', 'int', '81'), ('n21669', 'int', '22')]
[('n52383', 'str', '292 Lennox Street'), ('n80958', 'str', '72 Jones Road')]
这里有更多例子: https : //github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.