Как в Python узнать, какой элемент первее попадается в строчке?

Нужно узнать, какой элемент первее попадается в строке.

Например:

"Ага, типа того"

И нужно сделать условие, что первее: "Ага" или "того"?


Ответы (2 шт):

Автор решения: Komedik
text = "Ага, типа того"
a=[] #Список для засчитывания
count_a = 0 #Переменная, которая считает сколько раз повторялось "ага"
count_b = 0 #Переменная, которая считает сколько раз повторялось "того"
for i in text.split():
    if i == "ага":
        if count_a == 0:
            a.append(i)
        count_a += 1
    if i == "того":
        if count_b == 0:
            a.append(i)
        count_b += 1

print(a)

>>> ['ага', 'того']

Осталось только сделать условие на место элемента в списке: первее он или нет

Пример:

if a[0] == "ага":
    #Код
if a[1] == "того":
    #Код
→ Ссылка
Автор решения: Andy Pavlov

Есть два варианта поиска. Через регулярные выражения и метод строки find(). Вариант через регулярные выражения:

import re

text = "Привет. Ага, типа того"
finds = re.findall(r'(\bага\b|\bтого\b)', text, re.IGNORECASE)
print('Раньше встречается {}'.format(finds[0]))

Другой вариант, когда результат вычисляется через метод строки find(), возвращающий позиции искомых слов.Дальше сортируем и выдаем первое упоминание.

У этого метода минус, что он найдет ага и как отдельное слово, так и как составляющую слова.

text = "Привет. Ага, типа того"
req = ['ага', 'того']
positions = [(r, text.lower().find(r)) for r in req]
print('Раньше встречается {} на позиции {}'.format(*(sorted(positions, key=lambda x: x[1]))[0]))
→ Ссылка