Python中如何使用re模块实现okenizer


这篇文章主要介绍“Python中如何使用re模块实现okenizer”,在日常操作中,相信很多人在Python中如何使用re模块实现okenizer问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中如何使用re模块实现okenizer”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!分词(tokenization)任务是Python字符串处理中最为常见任务了。我们这里讲解用正则表达式构建简单的表达式分词器(tokenizer),它能够将表达式字符串从左到右解析为标记(tokens)流。给定如下的表达式字符串:我们想要将其转换为下列以序列对呈现的分词结果:要完成这样的分词操作,我们首先需要定义出所有可能的标记模式(所谓模式(pattern),为用来描述或者匹配/系列匹配某个句法规则的字符串,这里我们用正则表达式来做为模式),注意此处要包括空格whitespace,否则字符串中免费云主机域名出现任何模式中没有的字符后,扫描就会停止。因为我们还需要给标记以NAME、EQ等名称,我们采用正则表达式中的命名捕获组来实现。接下来我们用模式对象中的scanner()方法来完成分词操作,该方法创建一个扫描对象:然后可以用match()方法获取单次匹配结果,一次匹配一个模式:当然这样一次一次调用过于麻烦,我们可以使用迭代器来批量调用,并将单次迭代结果以具名元组形式存储最终显示表达式串"foo = 12 + 5 * 6"的tokens流为:接下来我们想要过滤掉空格标记,使用生成器表达式即可:可以看到空格被成功过滤:tokens在正则表达式(即"|".join([NAME, EQ, NUM, PLUS, TIMES, WS]))中顺序也非常重要。因为在进行匹配时,re模块就会按照指定的顺序对模式做匹配。故若碰巧某个模式是另一个较长模式的子串时,必须保证较长的模式在前面优先匹配。如下面分别展示正确的和错误的匹配方法:第二种顺序的错误之处在于,这样会把'文本匹配为LT(')紧跟着EQ('='),而没有匹配为单独的LE()。我们对于“有可能”形成子串的模式也要小心,比如下面这样:可以看到被print实际上成了另一个模式的子串,导致另一个模式的匹配出现了问题:更高级的语法分词,建议采用像PyParsing或PLY这样的包。特别地,对于英文自然语言文章的分词,一般被集成到各类NLP的包中(一般分为按空格拆分、处理前后缀、去掉停用词三步骤)。对于中文自然语言处理分词也有丰富的工具(比如jieba分词工具包)。[1] Martelli A, Ravenscroft A, Ascher D. Python cookbook[M]. ” O’Reilly Media, Inc.”, 2015. 数学是符号的艺术,音乐是上界的语言。到此,关于“Python中如何使用re模块实现okenizer”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: vue是不是javascript

这篇文章主要介绍“vue是不是javascript”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue是不是javascript”文章能帮助大家解决问题。 vue不是JavaScript,但是vue是基于JavaScr…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/27 14:10
下一篇 04/27 14:10

相关推荐