我正在尝试用Python完成一个简单的任务,而且我是该语言的新手(我是C ++)。我希望有人能指出我正确的方向。
问题: 我有一个充满数据的XML文件(12mb),在文件中有开始标记'xmltag'和结束标记'/ xmltag',它们代表我想要提取的数据部分的开头和结尾。
我想通过循环浏览这个打开的文件,并为每个实例找到一个开始标记,并将该部分中的数据复制到新文件,直到结束标记。我想重复一遍到文件的末尾。
我对文件I / O感到满意,但不是最有效的循环,搜索和提取数据。
我非常喜欢语言的外观,希望我能更多地参与其中,这样我就可以回馈社区了。
非常感谢!
答案 0 :(得分:3)
from BeautifulSoup import BeautifulSoup
with open('bigfile.xml', 'r') as xml:
soup = BeautifulSoup(xml):
for xmltag in soup('xmltag'):
print xmltag.contents
答案 1 :(得分:2)
答案 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]