Найти второе вхождение новой строки перед "-" - PullRequest
1 голос
/ 03 мая 2020

Итак, некоторые примеры текстов таковы:

Greece: Rare
Athens
Patras
------
Italy: Unique
Milan
------

, и я хочу получить весь текст между вторым появлением новой строки перед "-" и "-".

Ожидаемый результат:

Patras
Milan

Возможно ли это через регулярное выражение или я должен попробовать что-то еще?

Ответы [ 2 ]

3 голосов
/ 03 мая 2020

просто ищите строку перед тире:

import re

text="""Greece: Rare
Athens
Patras
------
"""

print(re.search("(.*)\n-+",text).group(1))

печатает

Patras

обратите внимание, что группа (.*) соответствует строке, но не предыдущим, благодаря тому, что . не соответствует \n по умолчанию.

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

lines = text.splitlines()
index = next(i for i,x in enumerate(lines) if x.startswith("-"))
print(lines[index-1])

Хотя я бы go за решение регулярных выражений.

0 голосов
/ 03 мая 2020

Это решение:

import re

texts=["""Greece: Rare
Athens
Patras
------
""","""Italy: Unique
Milan
------"""]
for text in texts:
    print(re.search("\n(.*)\n[-]",text).group(1))

Вывод:

Patras
Milan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...