您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python删除小词

使用Python删除小词

当然,这也不难:

shortword = re.compile(r'\W*\b\w{1,3}\b')

上面的表达式选择任何以某些非单词字符开头的单词(本质上是空格或开头),其长度在1-3个字符之间,并以单词边界结尾。

>>> shortword.sub('', anytext)
' echo chAmber from Ontario '

\b边界的比赛是很重要的位置,他们保证你不匹配只是一个字的第一个或最后3个字符。

\W*一开始,您可以删除这两个词和前面的非单词字符,这样句子的其余部分仍然匹配起来。需要注意的是标点符号包含在\W,使用\s,如果你 只是删除前面的空白。

值得一提的是,这种正则表达式解决方案在其余单词之间 保留了 额外的空格,而mgilson的版本将多个空格字符折叠成一个空格。不知道这对您是否重要。

他的列表理解解决方 两者中较快的一种:

>>> import timeit
>>> def re_remove(text): return shortword.sub('', text)
... 
>>> def lc_remove(text): return ' '.join(word for word in text.split() if len(word)>3)
... 
>>> timeit.timeit('remove(" in the echo chAmber from Ontario duo ")', 'from __main__ import re_remove as remove')
7.0774190425872803
>>> timeit.timeit('remove(" in the echo chAmber from Ontario duo ")', 'from __main__ import lc_remove as remove')
6.4250049591064453
python 2022/1/1 18:41:43 有272人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶