文本解析器。

textparser的Python项目详细描述


buildstatuscoverage

关于

用python语言编写的文本解析器。

这个项目只有一个目标,速度!更多细节见下面的基准。

项目主页:https://github.com/eerimoq/textparser

文档:http://textparser.readthedocs.org/en/latest

学分

  • 感谢PyParsing提供了一个用户友好的界面。许多 textparser的类名取自此项目。

安装

pipinstalltextparser

示例用法

Hello World示例解析字符串Hello, World!并 输出其解析树['Hello', ',', 'World', '!']

脚本:

importtextparserfromtextparserimportSequenceclassParser(textparser.Parser):deftoken_specs(self):return[('SKIP',r'[ \r\n\t]+'),('WORD',r'\w+'),('EMARK','!',r'!'),('COMMA',',',r','),('MISMATCH',r'.')]defgrammar(self):returnSequence('WORD',',','WORD','!')tree=Parser().parse('Hello, World!')print('Tree:',tree)

脚本执行:

$ env PYTHONPATH=. python3 examples/hello_world.py
Tree: ['Hello', ',', 'World', '!']

基准

abenchmark比较10个json解析器的速度,解析a276 kb file

$ env PYTHONPATH=. python3 examples/benchmarks/json/speed.py

Parsed 'examples/benchmarks/json/data.json' 1 time(s) in:

PACKAGE         SECONDS   RATIO  VERSION
textparser         0.09    100%  0.19.0
parsimonious       0.17    183%  unknown
lark (LALR)        0.29    306%  0.6.6
funcparserlib      0.33    346%  unknown
textx              0.53    557%  1.8.0
pyparsing          0.67    710%  2.3.1
pyleri             0.78    825%  1.2.2
parsy              0.91    969%  1.2.0
lark (Earley)      2.11   2240%  0.6.6
parsita            2.26   2393%  unknown

注意1:解析器不一定针对 速度。优化它们可能会影响测量。

注2:结果解析树的结构各不相同,并且 可能需要额外的处理以使它们适合用户 申请。

注意3:只比较json解析器。解析其他语言可能 给出截然不同的结果。

贡献

  1. 分叉存储库。

  2. 安装必备组件。

    pip install -r requirements.txt
    
  3. 实现新功能或错误修复。

  4. 实施测试用例以确保将来的更改不会中断 遗产。

  5. 运行测试。

    make test
    
  6. 创建拉取请求。

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

推荐PyPI第三方库


热门话题
java Google Billing Library:QueryPurchaseAsync:取消购买的订阅资源未返回   java转换列表mapsturct中的单个对象   java简单算法。我做不好   包含集合的@ManyToMany映射的java JPA2持久性   在Java中序列化和反序列化对象时发生BuffereImage错误   java使用ui:param传递值并在backingbean中访问它们   java从应用程序读取配置。yml至POJO列表地图   java中在while循环外部调用文件值   java如何与来自不同类的UI交互   java如何在jTable中显示2D数组?   在Java 8中,类为什么不从接口继承默认方法?   java类。getAnnotation和getAnnotations无法正常工作   java处理pagertabstrip上的触摸事件   java GWT和struts2异常   用Java解析HTTP查询字符串   java这段代码SQL注入安全吗?