如何使用Python删除特定单词之前的所有单词(如果有多个特定单词)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Python删除特定单词之前的所有单词(如果有多个特定单词)?相关的知识,希望对你有一定的参考价值。

我想删除特定单词之前的所有单词。但在我的句子中有一些特定的词。以下示例:

dvdrentalLOG: statement: SELECT email, actor.last_name, count(actor.last_name) FROM (SELECT email, actor_id FROM (SELECT email, film_id FROM (SELECT email, inventory_id FROM customer as cu JOIN rental ON cu.customer_id = rental.customer_id ORDER BY email) as sq JOIN inventory ON sq.inventory_id = inventory.inventory_id) as sq2 JOIN film_actor ON sq2.film_id = film_actor.film_id) as sq3 JOIN actor ON sq3.actor_id = actor.actor_id GROUP BY email, actor.last_name ORDER BY COUNT(actor.last_name) DESC

在上面的例子中,我想删除第一个SELECT之前的所有单词。我已经尝试过这个How to remove all characters before a specific character in Python?

知道我需要做什么吗?

答案

您可以使用此正则表达式并替换为空字符串:

^.+?(?=SELECT)

像这样:

result = re.sub(r"^.+?(?=SELECT)", "", your_string)

说明:

因为你想删除第一个SELECT之前的所有内容,匹配将从字符串^的开头开始。然后你懒洋洋地匹配任何角色.+?,直到你看到SELECT

或者,删除前瞻并替换为SELECT

result = re.sub(r"^.+?SELECT", "SELECT", your_string)

编辑:

我找到了另一种方法,用partition

partitions = your_string.partition("SELECT")
result = partitions[1] + partitions[2]
另一答案

如果您只关心第一次出现的单词,那么很容易做到。考虑以下示例

import re
txt = 'blah blah blah SELECT something SELECT something another SELECT'
output = re.sub(r'.*?(?=SELECT)','',txt,1)
print(output) #SELECT something SELECT something another SELECT

我在模式中使用了所谓的零长度断言,所以只有当SELECT跟随并且我给1作为第4个re.sub参数时才匹配,这意味着只有1个替换。

以上是关于如何使用Python删除特定单词之前的所有单词(如果有多个特定单词)?的主要内容,如果未能解决你的问题,请参考以下文章

Python如何删除文本文件中特定字符串之后或之前的特定行数

如何在r中使用正则表达式删除单词之前的所有措辞?

如何从 id3 标签中删除特定单词

替换所有连续重复的字母,忽略特定的单词

如何从字符串中删除特定单词?

如何使用批处理脚本删除名字包含特定单词的html文件?