Как удалить все слова перед определенным словом, используя Python (если есть несколько конкретных слов)?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

0
задан jonrsharpe 14 April 2019 в 08:31
поделиться

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 замена.

0
ответ дан Daweo 14 April 2019 в 08:31
поделиться

Можно использовать этот regex и замену пустой строкой:

^.+?(?=SELECT)

как это:

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

Объяснение:

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

, С другой стороны, удаляют предвидение и замену SELECT:

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

РЕДАКТИРОВАНИЕ:

я нашел еще один способ сделать это, с [1 110] partition :

partitions = your_string.partition("SELECT")
result = partitions[1] + partitions[2]
0
ответ дан Sweeper 14 April 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: