使用Python从.txt文件提取数据
我有很多很多的 .xml 文件,我需要从中提取一些坐标。直接从 .xml 文件中提取数据看起来非常复杂,所以我决定先把 .xml 文件保存为 .txt 文件,然后再从中提取数据。不过,当我打开 .txt 文件时,发现我的数据都挤在大约六行里。而且我找到的所有脚本都是通过读取每行的第一个单词来选择数据的,但显然这对我来说行不通!
我需要提取这些注释之间的数字:
<gml:lowerCorner>137796 483752</gml:lowerCorner> <gml:upperCorner>138178 484222</gml:upperCorner>
在文本文件中,它们都被挤在一起了!有没有人知道怎么提取这些数据?谢谢!
4 个回答
最上面的答案依然是最好的答案。不过,我一直在用HTML做这个,链接 lxml和xpath 非常合适。
首先,打开你的浏览器,访问你感兴趣的网站(或者数据)。在Chrome浏览器中,右键点击想要查看的内容,然后选择“检查元素”。在开发者窗口中,找到高亮的文本,再次右键点击,选择“复制XPath”。比如在google.com上点击主搜索框,我得到了以下的XPath。
//*[@id="lst-ib"]
你可以用lxml来提取这个项目的各种数据。试着在后面加上'text()'、'@value'或者'@href',看看会得到什么结果。
你可以像打开 .txt 文件一样,直接通过 Python 脚本打开 .xml 文件。
data = open("file.xml")
xml = data.read()
然后你可以使用正则表达式来找到你想要的那些数字。
这真的是错误的方法。别再这样做了,改进你的方式吧 :-)
说真的,如果这个文件是XML格式的,那就直接用XML解析器来读取它。学会在Python中怎么做其实并不难,这样现在会让你的生活更轻松,将来面对更复杂的解析需求时也会简单很多,你就不用再重新学习了。
看看xml.etree.ElementTree.ElementTree
。这里有一些示例代码:
>>> from xml.etree.ElementTree import ElementTree
>>> tree = ElementTree()
>>> tree.parse("your_xml_file.xml")
现在只需阅读这个模块的文档,看看你可以用tree
做些什么。你会惊讶地发现,通过这种方式获取信息是多么简单。如果你有关于提取数据的具体问题,我建议你再开一个新问题,说明你要解析的XML文件格式,以及你需要提取哪些数据。我相信几分钟内就会有人给你提供可用的代码建议。