Вы можете использовать встроенный метод поиска строк.Для нахождения первого вхождения:
pos = huge_text.find('Amount')
Теперь pos
равно -1, если Сумма не найдена, в противном случае ее индекс.Чтобы найти все вхождения, вы можете заключить его в цикл s while
:
positions = []
p = 0
while p >= 0:
p = huge_text.find('Amount', p+1)
if p > 0:
positions.append(p)
В этом случае вы всегда начинаете новый поиск с последнего найденного индекса.Но если вы хотите найти суммы, вам следует рассмотреть регулярные выражения :
import re
amounts = re.findall(r'Amount: ?\$(\d+.?\d?)', huge_text)
Объяснение: В скобках указан фактический шаблон, который мы хотим извлечь (\d+.?\d?
указывает, что эточисло), первая часть (Amount: ?
) содержит ключевое слово, которое вы ищете, за которым следует двоеточие и дополнительный пробел.Пример:
import re
huge_text = 'Lorem ipsum Amount: $345 dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Amount:$6351 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu Amount: $9852 fugiat nulla pariatur.'
amounts = [float(x.strip()) for x in re.findall(r'Amount: ?\$(\d+.?\d?)', huge_text)]
# => [345.0, 6351.0, 9852.0]
Последний шаг просто преобразует совпадения в числа.