由于最近处理数据时涉及到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会显示缺少该文件

python for dblp.xml的更多相关文章

  1. python获取DBLP数据集

    #!/usr/bin/python # -*- coding: UTF-8 -*- import xml.sax import io, sys paper_tags = ('article', 'in ...

  2. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  3. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

  4. 在python中处理XML

    XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> < ...

  5. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  6. python专题-读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  7. python模块:xml

    """Core XML support for Python. This package contains four sub-packages: dom -- The W ...

  8. 【304】python专题-读取xml文件

    参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...

  9. Python模块 shelve xml configparser hashlib

    常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...

随机推荐

  1. 剑指offer42:不用加减乘除做加法

    分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1): 2. 做进位,5+7中有进位,进位的值 ...

  2. Java利用MethodHandle实现反射时调用super的method

    一:实现 1.Base类的实现 package me.silentdoer.reflecsuper; /** * @author silentdoer * @version 1.0 * @descri ...

  3. 网络timeout区分

    ConnectTimeout 连接建立时间,三次握手完成时间 SocketTimeout 数据传输过程中数据包之间间隔的最大时间 下面重点说下SocketTimeout,比如有如下图所示的http请求 ...

  4. VS SVN

    AnkhSVN - Subversion Support for Visual Studio    直接包管理中就可以安装 VS2015和SVN合作 Visual Studio 添加SVN插件 Ank ...

  5. Android viewpager + 可缩放的imageview

    http://files.cnblogs.com/files/liaolandemengxiang/PhotoWallFallsDemo.rar http://files.cnblogs.com/fi ...

  6. 最大流最小割学习 基本知识 | 证明 | FF算法

    可行流 : 能流过去就行,不一定是最大流. 最大流:能流到的最大流量.(可能不只一个) 解决最大流: Ford-Fulkerson方法 最小割:从图中去除一些边,使得源点S到汇点T不连通,去除的这些边 ...

  7. FastReport使用技巧

    使用技巧篇 1.FastReport中如果访问报表中的对象?       可以使用FindObject方法.      TfrxMemoView(frxReport1.FindObject('memo ...

  8. Android-AndroidStudio加载工程方式-gradle文件夹

    例如:在其他地方,其他工作人员哪里的OpenGateDemo工程是OK的, 然后Copy到李四的电脑上运行是报错,其实所有的错误都和gradle有关: 第一步,李四电脑运行OpenGateDemo工程 ...

  9. 扩展 StackExchange.Redis 支持实体

    一.StackExchange.Redis StackExchange.Redis是由Stack Overflow开发的C#语言Redis客户端,使用广泛,本文针对 StackExchange.Red ...

  10. ubuntu18.10安装redis遇到问题

    执行命令apt-get install redis-server 安装遇到的问题 1.出现apt-get被占用情况,用ps -a|grep apt ,杀死存在的apt进程 2.还不行就执行sudo f ...