#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)) Пример.
Комментариев нет:
Отправить комментарий