Как удалить все слова перед определенным словом, используя Python (если есть несколько конкретных слов)? - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу удалить все слова перед определенным словом. Но в моем предложении есть какое-то конкретное слово. следующий пример:

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

В приведенном выше примере я хочу удалить все слова перед first SELECT. Я уже пробовал это Как удалить все символы перед определенным символом в Python?

Есть идеи, что мне нужно делать?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2019

Вы можете использовать это регулярное выражение и заменить его пустой строкой:

^.+?(?=SELECT)

как это:

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

Пояснение:

Поскольку вы хотите удалить все, что находится до первого SELECT, совпадение начнется с начала строки ^. И тогда вы лениво сопоставляете любой символ .+?, пока не увидите SELECT.

В качестве альтернативы, удалите заглушку и замените на SELECT:

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

EDIT:

Я нашел еще один способ сделать это, с partition:

partitions = your_string.partition("SELECT")
result = partitions[1] + partitions[2]
1 голос
/ 14 апреля 2019

Если вас интересует только первое вхождение слова, это легко сделать. Рассмотрим следующий пример

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 подстановка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...