【发布时间】:2011-07-28 16:49:39
【问题描述】:
我有一个如下所示的 XML 文件:
<encspot>
<file>
<Name>some filename.mp3</Name>
<Encoder>Gogo (after 3.0)</Encoder>
<Bitrate>131</Bitrate>
<Mode>joint stereo</Mode>
<Length>00:02:43</Length>
<Size>5,236,644</Size>
<Frame>no</Frame>
<Quality>good</Quality>
<Freq.>44100</Freq.>
<Frames>6255</Frames>
..... and so forth ......
</file>
<file>....</file>
</encspot>
我想将它读入 python 对象,类似于字典列表。因为标记是绝对固定的,所以我很想使用正则表达式(我非常擅长使用这些)。但是,我想我会检查是否有人知道如何在这里轻松避免正则表达式。不过,我在 SAX 或其他解析方面没有太多经验,但我愿意学习。
我期待看到如何在没有 Python 中的正则表达式的情况下快速完成此操作。感谢您的帮助!
【问题讨论】:
-
您可以查看lxml.de/objectify.html 或freenet.org.nz/python/xmlobject 之类的东西。XML 解析器有很多变体 - 请使用 PyPI。并且:忘记使用正则表达式编写解析器 - 只有不知道更好的傻瓜才会这样做。
-
stackoverflow.com/questions/1732348/… 我知道您在这里谈论的是 XML,但是 XML“不是常规语言,因此不能被正则表达式解析”的关键信息仍然存在。像回答者建议的那样使用 objectify 或 cElementTree。
-
谢谢!
lxml objectify乍一看似乎有点困难,但我最终使用xmlobject得到了相当不错的结果(只是我必须手动将源代码更改为 3.x 语法)......但是我会测试 @ 987654328@建议如果我有时间然后决定我要接受哪个答案 -
实际上,我给定的 XML 子集确实是常规的。我只建议使用正则表达式,因为它是固定的。
标签: python xml regex xml-parsing