#!/usr/bin/env python
# -*- codning: utf-8 -*-
import sys, os
# проверка структуры файла fb2
#----------------------------------------------
file = 'mesto_pod_solncem.fb2'
count = 0 # счетчик строк
flag = False # признак анализа тега
S = '' # место для обработанного тега
Tag = '' # место для тега
L = [] # стек
'''
with open(file, encoding="utf8") as f:
, ,LList = f.readlines()
for i in LList:
, ,count += 1
, ,if i.find('section') > -1:
, , , ,print(count)
, , , ,print(i)
f.close()
'''
count = 0 # счетчик строк
f = open(file, 'rb') # комментарий ниже
d = f.read()
for n in d:
, ,if n == 10: # символ завершения строки
, , , ,count += 1 # + в счетчик строк
, ,elif chr(n) == '<': # начало тега
, , , ,flag = True
, , , ,Tag = '' # подготовка места для тега
, ,else:
, , , ,if flag: # читаем тег
, , , , , ,if chr(n) == '>': # провека на конец тега, если да:
, , , , , , , ,S = Tag.split(' ')[0] # отбрасывание возможных параметров
, , , , , , , ,flag = False
, , , , , , , ,if S[0] == '/': # проверка на закрывающий тег
, , , , , , , , , ,S = S[1:] # удаление слеша
, , , , , , , , , ,Lo = L.pop() # чтение из стека
, , , , , , , , , ,if Lo[0] != S: # сообщение об ошибке
, , , , , , , , , , , ,print('Teg = "'+Lo[0]+'" begin in str = '+ str(Lo[1]+1))
, , , , , , , , , , , ,print('Не соответствует')
, , , , , , , , , , , ,print('Teg ="' +S+ '"end in str = '+ str(count +1))
, , , , , , , , , , , ,f.close()
, , , , , , , , , , , ,sys.exit()
, , , , , , , ,else:
, , , , , , , , if Tag[-1] != '/': # обработка одинарных тегов
, , , , , , , , , , Lo = [S, count] # подготовка для записи в стек
, , , , , , , , , , L.append(Lo) # запись в стек
, , , , , ,else:
, , , , , , , ,Tag = Tag + chr(n) # добавление символа к тегу
f.close()
print('OK!!!') # сообщение об удачной проверке.