文本解析器。
textparser的Python项目详细描述
学分
- 感谢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解析器。解析其他语言可能 给出截然不同的结果。
贡献
分叉存储库。
安装必备组件。
pip install -r requirements.txt
实现新功能或错误修复。
实施测试用例以确保将来的更改不会中断 遗产。
运行测试。
make test
创建拉取请求。