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

  • 相关阅读:
    2019-07-08 L410 EST科技英语翻译
    L405 NYC-ATF4
    L403 Royal espionage
    L402 EST
    L401 哭声识别
    L400 How Trees Affect the Weather
    L398
    final, finally, finalize 的区别
    try {}里有一个 return 语句, 那么紧跟在这个 try 后的 finally {}里的 code会不会被执行,什么时候被执行,在 return 前还是后?
    下 面 这 条 语 句 一 共 创 建 了 多 少 个 对 象 : String s="a"+"b"+"c"+"d";
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/7324025.html
Copyright © 2011-2022 走看看