zoukankan      html  css  js  c++  java
  • python for dblp.xml

    由于最近处理数据时涉及到dblp.xml,刚开始下载时dblp.xml只有300多M,但解压之后就有1.9G,没有什么东西能够打开,所以必须要用工具来处理,在python中sax包能够一边解析一边处理XML数据

    首先我们要知道dblp.xml里面的数据是什么格式的:

    以下为处理dplp.xml数据的代码(以下为我需要的数据,大家可以根据自己需要的数据来获取数据):

    # -*-coding:utf-8-*-
    import xml.sax

    datas=set()

    class MovieHandler(xml.sax.ContentHandler):
    def __init__(self):
    self.title = ""
    self.ee = ""
    self.year=""
    self.journal=""

    # 元素开始事件处理
    def startElement(self, tag, attributes):
    self.CurrentData = tag
    if tag == "article":
    key = attributes["key"]
    # 元素结束事件处理
    def endElement(self, tag):
    if self.CurrentData == "title":
    print u'title:',self.title
    elif self.CurrentData == "ee":
    print u'ee:',self.ee
    elif self.CurrentData == "journal":
    print u'journal:',self.journal
    if self.CurrentData == "year":
    print u'year:', self.year
    self.CurrentData = ""

    # 内容事件处理
    def characters(self, content):
    if self.CurrentData == "title":
    self.title = content
    elif self.CurrentData == "ee":
    self.ee = content
    elif self.CurrentData == "year":
    self.year = content
    elif self.CurrentData == "journal":
    self.journal = content

    if (__name__ == "__main__"):
    # 创建一个 XMLReader
    parser = xml.sax.make_parser()
    # turn off namepsaces
    parser.setFeature(xml.sax.handler.feature_namespaces, 0)

    # 重写 ContextHandler
    Handler = MovieHandler()
    parser.setContentHandler(Handler)
    parser.parse("dblp.xml")

    特别注意解析dblp.xml的时候要把dblp.dtd下载下来放在对应文件夹,要不python会显示缺少该文件

  • 相关阅读:
    LeetCode Notes_#20 Valid Parentheses
    LeetCode Notes_#14 Longest Common Prefix
    牛客21天刷题_day#3
    牛客21天刷题_day#2
    牛客21天刷题_day#1
    WebGL编程指南
    《Redis 设计与实现》
    《女士品茶》
    《Java应用架构设计:模块化模式与OSGi》
    《编译与反编译技术实战》
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/7324025.html
Copyright © 2011-2022 走看看