基本的Python文件搜索和I / O.

时间:2010-10-18 14:05:25

标签: python xml file search text

我正在尝试用Python完成一个简单的任务,而且我是该语言的新手(我是C ++)。我希望有人能指出我正确的方向。

问题: 我有一个充满数据的XML文件(12mb),在文件中有开始标记'xmltag'和结束标记'/ xmltag',它们代表我想要提取的数据部分的开头和结尾。

我想通过循环浏览这个打开的文件,并为每个实例找到一个开始标记,并将该部分中的数据复制到新文件,直到结束标记。我想重复一遍到文件的末尾。

我对文件I / O感到满意,但不是最有效的循环,搜索和提取数据。

我非常喜欢语言的外观,希望我能更多地参与其中,这样我就可以回馈社区了。

非常感谢!

5 个答案:

答案 0 :(得分:3)

检查BeautifulSoup

from BeautifulSoup import BeautifulSoup

with open('bigfile.xml', 'r') as xml:
    soup = BeautifulSoup(xml):
    for xmltag in soup('xmltag'):
        print xmltag.contents

答案 1 :(得分:2)

Dive Into Python 3有一个很好的章节:

这是一本关于python的免费书,值得一读!

答案 2 :(得分:1)

BeautifulSoup答案很好,但执行速度更快,不需要外部库:

import xml.etree.cElementTree as ET
tree = ET.parse('xmlfile.xml')
results = (elem for elem in tree.getiterator('xmltag'))

# in Python 2.7+, getiterator() is deprecated; use tree.iter('xmltag')

答案 3 :(得分:0)

无需安装BeautifulSoup,Python在其标准库中包含ElementTree解析器。

from xml.etree import cElementTree as ET
tree = ET.parse('myfilename')
new_tree = ET('new_root_element')
for element in tree.findall('.//xmltag'):
    new_tree.append(tree.element)
print ET.tostring(new_tree)

答案 4 :(得分:-2)

xml=open("xmlfile").read()
x=xml.split("</xmltag>")
for block in x:
    if "<xmltag>" in block:
        print block.split("<xmltag>")[-1]