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会显示缺少该文件

  • 相关阅读:
    随机生成字符串,可用来当id
    自己总结的关于uniapp项目用androidstuido打包成apk
    css3 滑动效果 门
    在数组里面随机获取随机的几个内容
    把一个数组分割成两个(不管奇数还是偶数)
    Mysql常用命令
    怎样才能彻底地删除多余输入法软件
    启动MySQL服务
    linux监控命令全覆盖
    浅谈MVC模式与SSH框架
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/7324025.html
Copyright © 2011-2022 走看看