Как в 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]))