当前位置: 首页 > 面试题库 >

使用Python删除小词

窦夜洛
2023-03-14
问题内容

是否可以使用正则表达式删除文本中的小词?例如,我有以下字符串(文本):

anytext = " in the echo chamber from Ontario duo "

我想删除所有不超过3个字符的单词。结果应为:

"echo chamber from Ontario"

使用正则表达式或任何其他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中使用NLTK删除停用词,包括了在Python中使用NLTK删除停用词的使用技巧和注意事项,需要的朋友参考一下 当计算机处理自然语言时,某些极端通用的单词似乎在帮助选择符合用户需求的文档方面几乎没有值,因此完全从词汇表中排除了。这些单词称为停用词。 例如,如果您输入的句子为- 停止单词删除后,您将获得输出- NLTK收集了这些停用词,我们可以将其从任何给定的句子中删除。

  • 问题内容: 我已经从论坛中提取了一些信息。这是我现在拥有的原始字符串: 我不喜欢的是子字符串和。我确实想保留字符串的其他部分,除此之外。所以结果应该是这样的 我该怎么办?实际上,我使用漂亮的汤从论坛中提取了上面的字符串。现在,我可能更喜欢使用正则表达式删除该部分。 问题答案: 该函数采用常规表达式,并将字符串中的所有匹配项替换为第二个参数。在这种情况下,我们正在搜索所有标签(),然后将其替换为()

  • 我试图从BST中删除最小节点,所以我在树中搜索,直到得到最小值(当root.leftnode为None时),然后将root.rightnode设置为根本身,以继续BST。 问题是,当我这样做之后检查树时,它不会显示曾经发生过的删除。 有人可以指出我正确的方向吗,任何建议都值得赞赏。

  • 本文向大家介绍python使用python-pptx删除ppt某页实例,包括了python使用python-pptx删除ppt某页实例的使用技巧和注意事项,需要的朋友参考一下 公司安排了个任务,爬取ppt资源,我爬取后打开ppt发现,最后一页是站点的宣传,需要删除。 仔细阅读了python-pptx的api和国内的教程,发现没有人写了关于删除ppt中某页的功能,所以科学上网去google上搜了一下

  • 问题内容: 我正在使用python删除和更新根据用户提供的数据生成的JSON文件,因此数据库中应仅存储少量项目。我想从JSON文件中删除特定对象。 我的JSON文件是: 我想使用删除JSON对象 。 由于我是python的新手,所以我尝试通过将对象转换为dict来删除它,但它不起作用。还有其他方法吗?我尝试了这个: 问题答案: 这是一个完整的示例,该示例加载JSON文件,删除目标对象,然后将更新的

  • 问题内容: Python的string.whitespace很棒: 如何在不使用手动输入regex的’\ t | \ n | …等的情况下将其与字符串一起使用? 例如,它应该能够显示:“请\ n不要\ t伤害我。 进入 “请不要伤害我。” 我可能想保留单个空格,但是我想只要去string.whitespace [:-1]就足够了。 问题答案: 正是这种用例有一个特殊情况的快捷方式! 如果不带参数调