просто ищите строку перед тире:
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 за решение регулярных выражений.