#python_3x
Всем привет!
Только начал разбираться в разработке на python и попалась интересная и в то же время
сложная задача для меня, которую я не могу решить.
Вот сама задача:
имеется текстовый документ, который состоит из пунктов, которые могут содержать сколько
угодно подпунктов (пример - 1.1. абв; 1.2. вба; 2.4. жзи). Из этого документа могут
удаляться любые пункты. Пример:
1.1. Пункт первый, текст.
1.2. Пункт второй, который будет полностью удален.
1.3. Пункт третий, текст.
При таком наивном удалении нумерация нарушится:
1.1. Пункт первый, текст.
1.3. Пункт третий, текст.
и пункт 1.3 будет следовать за пунктом 1.1.
А нужно, чтобы она не нарушалась. Т.е. после удаления пункта 1.2 пункт 1.3 должен
переименоваться в '1.2. Пункт третий, текст' и текст должен выглядеть так
1.1. Пункт первый, текст.
1.2. Пункт третий, текст.
Используется Python 3.6
Ответы
Ответ 1
Можно с помощью регулярных выражений исправить нумерацию: import re def make_replace(index): def replace(m): nonlocal index s = m.group(1) + str(index) index += 1 return s return replace replace = make_replace(index=2) for line in file: print(re.sub(r'(^1\.)\d+', replace, line), end='') Полный пример. См. Как заменить строчку в .txt файле через python 3? Можно упростить replace() функцию, используя itertools.count(): replace = lambda m, i=itertools.count(index): m.group(1)+str(next(i)) Пример.
Комментариев нет:
Отправить комментарий