я пытаюсь сортировать данные, поступающие из интернет-обычный текст доклада правительства, который выглядит примерно так:Python многострочного поиска регулярных выражений между разделами
Potato Prices as of 24-SEP-2014
Idaho
BrownSpuds
SomeSpuds 1.90-3.00 mostly 2.00-2.50
MoreSpuds 2.50-3.50
LotofSpuds 5.00-6.50
Washington
RedSpuds
TinyReds 1.50-2.00
BigReds 2.00-3.50
BrownSpuds
SomeSpuds 1.50-2.50
MoreSpuds 3.00-3.50
LotofSpuds 5.50-6.50
BulkSpuds 1.00-2.50
Long Island
SomeSpuds 1.50-2.50 MoreSpuds 2.70-3.75 LotofSpuds 5.00-6.50
etc...
Я включил противоречивые отступы и разрывы строк намеренно. Это правительственная операция.
Но мне нужна функция, которая может найти цену для «MoreSpuds» в Айдахо, например, или «TinyReds» в Вашингтоне. У меня есть подозрение, что это работа для Regex, но я не могу понять, как искать несколько строк между «Айдахо» и «Вашингтоном».
EDIT: Добавление следующей трудности. Отдельный элемент не всегда присутствует в определенном состоянии. Например, «RedSpuds» в Вашингтоне может выйти за сезон до «RedSpuds» в другом штате. Мне нужно, чтобы поиск заканчивался до того, как он достигнет следующего состояния, не давая мне никакой цены, если элемент не указан.
Я также столкнулся с ситуацией, когда цены были написаны в абзаце вместо списка. Похоже на последний пример, но фактические названия продуктов намного длиннее, например «Один упакованный 10 5-фунтовых мешков sz A 10.00-10.50», поэтому некоторые из имен разделяются между строками, а это означает, что в любом случае может быть новая строка в середине имени.
Спасибо за подробное объяснение. Я забыл также упомянуть, что иногда данный предмет больше не будет указан в штате, красный картофель выходит из сезона в Миннесоте раньше, чем в Вашингтоне, например.Как убедиться, что поиск заканчивается до достижения следующего состояния? –
Перед состоянием должен стоять стартовый якорь или пустая строка. Таким образом, мы гарантируем, что поиск заканчивается до достижения следующего состояния. –