Вы читаете входной файл построчно, таким образом, ваше регулярное выражение не может «видеть» между строками, \n
- последний символ в каждой строке, а (?=^[^\d])
просто не имеет смысла, так как требует начала следующей строкис символом, отличным от цифры.
Используйте что-то вроде:
import re, io
with io.open('greek.txt','r',encoding='utf8') as f1:
with io.open('greek_r.txt','w',encoding='utf8') as f2:
f2.write(re.sub(r'\r?\n(\D)', r' \1', f1.read()))
\r?
добавляется для соответствия необязательному символу CR (если разрыв строки выполнен в стиле Windows).r'\r?\n(\D)'
можно заменить на r'(?u)\r?\n([^\W\d_])'
, чтобы соответствовать только разрыву строки, за которым следует буква ([^\W\d_]
соответствует любому символу, кроме не-слова, цифры и _
символов,т.е. любая буква).(?u)
- это встроенная версия модификатора re.U
, соответствующая любой букве Юникода в Python 2.x (в Python 3 она используется по умолчанию).
Вывод:
Blessed is a Man
1. μακάριος ανήρ
2. ότι γινώσκει κύριος