К книге
Приложение к «Python в библиотеке»Arch. 7. j_par.py
32%
Arch. 7. j_par.py
11

#!/bin/env python

# -*- coding: utf-8 -*-

# Объединение абзацев (версия 19.10.21)

import sys, os

#--------------------------------------

def EndStr(s):

, ,SQ = ''

, ,for a in reversed(s):

, , , ,if a == ' ':

, , , , , ,return SQ[:-1]

, , , ,else:

, , , , , ,SQ = a+SQ

#--------------------------------------

old_List = [] # Сюда читается

new_List = [] # Промеждуточный список

#--------------------------------------

#FN = input('Введите имя файла:')

#fn1=path+FN

FN = '2_.txt'

fb2_file=open(FN,'r')

#fb2_file=open(FN,'r', encoding='utf-8')

old_List=fb2_file.readlines()

fb2_file.close()

#--------------------------------------

SS = '' # Промежуточное хранение строки

FlagQ = False

i = -1

for item in old_List: # первый проход

поиск разорванных строк

, ,i += 1

, ,if i >= len(old_List):

# , , , ,new_List.append(item[i+1]) ?

, , , ,break

, ,s = item.strip()# Обрезание пробелов

, ,if s == '':

, , , ,new_List.append(s)

, , , ,continue

, ,m = ord(s[-1]) # последний символ строки

# , ,print(s)

, ,if (m > 1071 and m < 1104) or m == 44: # от "а" до "я" + ","

, , , ,if i+1 >= len(old_List):

, , , , , ,break

, , , ,d = old_List[i+1].strip()

, , , ,if (d != ''):

, , , , , ,m = ord(d[0]) # первый символ следующей строки

, , , , , ,if (m > 1071 and m < 1104): # от "а" до "я"):

, , , , , , , ,new_List.append(s+' @')# помечаем строку для объединения с последующей

, , , , , ,else:# в обычном тексте вероятность, что строка

завершится "собачкой" очено мала, но ... тогда это будет ошибочное объединение

, , , , , , , ,new_List.append(s)

, , , ,else:

, , , , , ,new_List.append(s)

, ,else:

, , , ,new_List.append(s)

old_List.clear()

#for item in reversed(new_List): # второй проход

объединение помеченных строк

for item in new_List:

, ,if item == '':

, , , ,if SS != '':

, , , , , ,old_List.append(SS)

, , , , , ,SS = ''

, , , ,old_List.append(item)

, , , ,continue

, ,if FlagQ:

, , , ,SS = SS[:-1] + item

, , , ,FlagQ = item[-1] == '@'

, ,else:

, , , ,if SS != '':

, , , , , ,old_List.append(SS)

, , , , , ,SS = ''

, , , ,if item[-1] == '@': # последний символ строки

, , , , , ,FlagQ = True

, , , , , ,SS = item

, , , ,else:

, , , , , ,old_List.append(item)

if SS != '':

, ,old_List.append(SS)

#--------------------------------------

fn2="3_x.txt"

new_file=open(fn2,'w')

for i in old_List:

, , new_file.write(i+'\n')

new_file.close()

print('Done')

Предыдущая главаГлава 11 из 34Следующая глава