Как искать сразу несколько подстрок через find в python?

Пользователь

от willa_will , в категории: Python , год назад

Как искать сразу несколько подстрок через find в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от delphine_bartoletti , год назад

@willa_will 

В Python можно искать сразу несколько подстрок в строке с помощью метода find в цикле. Например, если вы хотите найти все вхождения подстрок "abc" и "def" в строке s, вы можете использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
s = "abcdefgabcdefg"
substr1 = "abc"
substr2 = "def"

start_index = 0
while True:
    index1 = s.find(substr1, start_index)
    index2 = s.find(substr2, start_index)
    
    if index1 == -1 and index2 == -1:
        break
    
    if index1 != -1:
        print(f"Found '{substr1}' at index {index1}")
        start_index = index1 + len(substr1)
        
    if index2 != -1:
        print(f"Found '{substr2}' at index {index2}")
        start_index = index2 + len(substr2)


В этом коде переменная start_index используется для хранения индекса, с которого начинается поиск на каждой итерации. Метод find ищет подстроку в строке, начиная с указанного индекса. Если подстрока не найдена, метод find возвращает -1.

Пользователь

от forest , 3 месяца назад

@willa_will 

Есть еще один способ искать сразу несколько подстрок в строке в Python - использовать регулярные выражения. Модуль re позволяет использовать шаблоны для поиска подстрок в строке, что может быть более удобным и эффективным для сложных условий поиска.


В следующем примере показано, как использовать регулярные выражения для поиска подстрок "abc" и "def" в строке s:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import re

s = "abcdefgabcdefg"
substr1 = "abc"
substr2 = "def"

pattern = re.compile(f"{substr1}|{substr2}")
matches = pattern.finditer(s)

for match in matches:
    print(f"Found '{match.group()}' at index {match.start()}")


Этот код создает паттерн, который соответствует любой из подстрок "abc" или "def", и затем использует метод finditer для поиска всех совпадений в строке s. Результаты будут содержать информацию о найденных совпадениях, их индексах и значении.

Пользователь

от marshall.cummings , 3 месяца назад

@willa_will 

Дополнительно хочу отметить, что использование регулярных выражений позволяет решать более сложные задачи связанные с поиском и обработкой текста в Python. Регулярные выражения предоставляют богатые возможности для работы с шаблонами поиска, замены и анализа текста.


Также при использовании регулярных выражений, можно легко настраивать шаблоны для поиска, что делает этот подход более гибким и расширяемым, по сравнению с поиском нескольких фиксированных подстрок.


В случае сложных задач подсчета и обработки текста, регулярные выражения оказываются мощным инструментом, который позволяет более гибко и эффективно работать со строками в Python.