从半结构化文本文档中提取数据的库

raspador的Python项目详细描述


https://api.travis-ci.org/fgmacedo/raspador.png?branch=masterhttps://coveralls.io/repos/fgmacedo/raspador/badge.pnghttps://pypip.in/v/raspador/badge.pnghttps://pypip.in/d/raspador/badge.png

从半结构化文本文档中提取数据的库。

它最适合在没有 结构和是纯文本的(或易于转换的)。结构化文件 像xml、csv和html一样,不适合raspador的良好用例,并且 提取数据的绝佳选择,比如lxmlhtml5libBeautifulSoup,和PyQuery

提取器通过类定义为模型,类似于 Django Orm公司。每个字段搜索由正则 表达式和捕获的组将自动转换为原语。

解析器被实现为一个生成器,其中找到的每个项都可以被使用 在分析结束之前,以管道为特色。

分析是向前的,这使得它非常快,因此 可以分析返回字符串的迭代器,包括无限流。

安装

拉斯帕多在cpython 2.6+、cpython 3.2+和pypy上工作。要安装它,请使用:

pip install raspador

或易于安装:

easy_install raspador

来源

从源代码下载并安装:

git clone https://github.com/fgmacedo/raspador.git
cd raspador
python setup.py install

依赖性

没有外部依赖项。

注意

python 2.6版

对于python 2.6,必须安装ordereddict

您可以使用pip安装它:

pip install ordereddict

测试

为了同时使用所有受支持的python版本自动化测试,我们使用tox

使用以下命令运行所有测试:

$ tox

测试依赖于几个第三方库,但这些库是由tox安装的 在每个python的virtualenv上:

nose==1.3.0
coverage==3.6
flake8==2.0

示例

从日志中提取数据
from__future__importprint_functionimportjsonfromraspadorimportParser,StringFieldout="""
PART:/dev/sda1 UUID:423k34-3423lk423-sdfsd-43 TYPE:ext4
PART:/dev/sda2 UUID:74928389-852893-sdfdf-g8 TYPE:ext4
PART:/dev/sda3 UUID:sdkj9d93-sdf9df-3kr3l-d8 TYPE:swap
"""classLogParser(Parser):begin=r'^PART.*'end=r'^PART.*'PART=StringField(r'PART:([^\s]+)')UUID=StringField(r'UUID:([^\s]+)')TYPE=StringField(r'TYPE:([^\s]+)')a=LogParser()# res is a generatorres=a.parse(iter(out.splitlines()))out_as_json=json.dumps(list(res),indent=2)print(out_as_json)# Output:"""
[
  {
    "PART": "/dev/sda1",
    "TYPE": "ext4",
    "UUID": "423k34-3423lk423-sdfsd-43"
  },
  {
    "PART": "/dev/sda2",
    "TYPE": "ext4",
    "UUID": "74928389-852893-sdfdf-g8"
  },
  {
    "PART": "/dev/sda3",
    "TYPE": "swap",
    "UUID": "sdkj9d93-sdf9df-3kr3l-d8"
  }
]
"""

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求