Удалите все символы до n-го появления

#python #substring

Вопрос:

Есть ли эквивалент CHARINDEX/SUBSTRING из SQL в Python?

Что я пытаюсь сделать, так это удалить символы до 3-го ' и после 4 ' -го, что означает, что у меня останется только числовое значение.

 a = "[counter('check', Id('23345675'))]"

 

Ожидаемый Вывод Строки:

 a = "23345675"
 

Ответ №1:

Если вам нужно все, что находится между 3-м и 4 ' -м, вы можете разделить строку ' и получить 3-ю часть:

 a = "[counter('check', Id('23345675'))]"
a.split("'")[3]  # "23345675"
 

Обратите внимание, что вы также можете разделить определенное количество раз, например, если вы хотите все после 3-го ' :

 a.split("'", 3)[-1]  # this gives: "23345675'))]"
 

Ответ №2:

Не очень знаком с SQL, но вы ищете что-то подобное?

 >>> a.split("'")[3]
'23345675'
 

Ответ №3:

Похоже на работу по разбору регулярных выражений:

 import re

test_string = "[counter('check', Id('23345675'))]"
pattern = re.compile(r"(?:.*?'){3}(.*?)'")
m = pattern.match(test_string )
print(m.group(1))
 

Шаблон, по сути, говорит, что найдите все, что заканчивается «3 раза, затем захватите часть до следующего».