使用python从.txt文件中提取数据

时间:2011-01-18 08:58:36

标签: python xml text extract

我有很多很多.xml文件,我需要从中提取一些坐标。 直接从.xml文件中提取数据似乎非常非常复杂 - 所以我正在将.xml文件保存为.txt文件并以这种方式提取数据。但是,当我打开.txt文件时,我的数据全部聚集在大约6行上。到目前为止我找到的所有脚本通过读取每行上的第一个单词来选择数据..但显然不会为我工作! 我需要在这些评论之间提取数字:

<gml:lowerCorner>137796 483752</gml:lowerCorner> <gml:upperCorner>138178 484222</gml:upperCorner>

在文本文件中,它们全部组合在一起!有谁知道如何提取这些数据?谢谢!

4 个答案:

答案 0 :(得分:15)

这绝对是错误的方法。别管它并改进你的方式:-)

说真的,如果文件是XML,那么只需使用XML解析器来读取它。学习如何在Python中完成这项工作并不难,将来会让您的生活更轻松,将来也更容易,当您发现自己面临更复杂的解析需求时,您将不必重新学习它。

看看xml.etree.ElementTree.ElementTree。这是一些示例代码:

>>> from xml.etree.ElementTree import ElementTree
>>> tree = ElementTree()
>>> tree.parse("your_xml_file.xml")

现在只需阅读该模块的文档,看看您可以使用tree做些什么。您会惊讶地发现以这种方式获取信息是多么简单。如果您有关于提取数据的具体问题,我建议您打开另一个问题,在该问题中指定您必须解析的XML文件的格式,以及您必须从中获取的数据。我确信你会在几分钟内向你建议工作代码。

答案 1 :(得分:1)

您还可以在打开.txt文件时打开python脚本.xml文件。

    data = open("file.xml")
    xml = data.read()

然后你可以使用正则表达式来找到你想要的那些数字。

答案 2 :(得分:0)

最佳答案仍然是最佳答案。但是,我一直在用HTML和lxml and xpath这个链接做这件事。

将浏览器打开到感兴趣的网站(或数据)。在Chrome中,右键单击并检查元素&#39;。在突出显示的文本的“开发人员”窗口中,再次右键单击并复制XPath&#39;。对于google.com并点击主搜索框,我得到以下XPath。

//*[@id="lst-ib"]

您可以使用lxml从此项目中获取各种数据。看看你附加的文字()&#39;或者&#39; @ value&#39;或者&#39; @ href&#39;最后。

答案 3 :(得分:-2)

对于非常简单的xml我只使用正则表达式,不能为一个简单的xml包启动慢速xml解析器。

In [1]: data = open("file.txt","r").read()

In [2]: import re

In [3]: re.compile("([\d]+)").findall(data)
Out[3]: ['137796', '483752', '138178', '484222']