- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Pyparsing中文教程V2
Py parsing 导引
by Pau M Guire
你需要从文本文件或网页中提取数据吗?或者你想要更人性化的用户命令接口或
者搜索字符串?正则表达式和lex/ya 让你的眼睛和脑袋疼?
Py parsing将成为解决方案。Py parsing是纯python的类库,其能让你容易的建立递
归下降(re ursive-des ent) 解析器。这不需要你自己写个解析器。只要使用
py parsinng ,你能够解析HTML,轻松建立日志文档数据提取器,复杂数据结构以及
命令解释器。这个Short Cut将告诉你怎么做!
Py parsing 导引
Py parsing是什么?
Py parsing程序的简单形式
从Py parsing 出引用名字
定义语法
使用语法解析输入文本
处理解析后的文本
“Hello,World”在Steroids
什么使得Py parsing变得不同?
类名比特殊符号好读并且好理解
语法定义中的空格的扰乱
结果应当比单纯的列表形式多更多东西
在解析时间就执行的预处理
语法必须对改变具有更强的适应性和健壮性
从表格文件中解析数据-使用解析行为和ParseResults
从网页数据中提取数据
一个简易S表达式解析器
一个完整的S表达式解析器
解析搜索字符串
100行代码以内的搜索引擎
结论
索引
“我需要解析这个日志文件…”
“只是要从网页中提取数据…”
“我们需要一个简单的命令行解释器…”
“我们的源代码需要移植到新A PI集上…”
这些工作要求每天都让开发者们条件反射般的骂娘”擦,又要一个解析器!”
解析不十分严格格式的数据形式的任务经常出现在开发者面前。有时其是一次性
的,像内部使用的A PI升级程序。其他时候,解析程序作为在命令行驱动的程序中
的内建函数。
如果你在Python 中变成,你可以脱离这些工作,通过使用Python的内建字符串方
法,比如split(),index() 以及startwith().
让这项工作又变得讨厌的是我们经常不只是对字符串分割和索引,对于一些内容
可变形式或复杂的语法定义来说。比如:
y = 2 * x + 10
(每个符号间都有空分隔)
是容易解析的,对于这种空格分离的形式。不幸的是,很少有用户会如此这般使
用空格,算术表达式经常像这样:
y = 2*x + 10
y = 2*x+10
y=2*x+10
直接对最后一个字符串运用split方法会导致返回原字符串 (作为一个列表的唯一实
例),不会分离出这些单独的元素y,=2,等等.
处理这种超越str.split 的解析任务的工具是正则表达式或lex/ya 。正则表达式用一
个字符串去描述文本模式以便匹配。那个字符串使用特殊符号(像|,+,.,*,?)去表示不
同的解析概念像alternation(多选),repetition(重复) 以及wild ards(通配符).Lex/ya
是则先拆出标记,然后应用过程代码到解压出的标记上。Lex/ya 使用一个单独的
标记定义文件,然而产生lex 中间文件以及标记过程代码模板给程序员扩展,以驱
动程序的特殊行为。
历史注释
这些文本处理技术最早在1970年以C实现,现在它们仍在广大的领域发挥作
用。Python通过re模块以及”batteries in luded” 的部分标准库提供了对正则
表达式的支持。你可以下载一些免费的lex/ya 风格的解析器模块,其提供
了对python的接口。
这些传统工具的主要问题在于它们独特的标记系统需要被精确映射到Python的代
码上。比如lex
文档评论(0)