Привет!
Подскажите, как можно получить авторов книг fb2? Голову сломал, вроде и получаю списки, но натыкаюсь на проблему, когда автор не один, а тег middle-name (отчество) указан не для всех, тогда список неверного размера и теряется порядок
У меня выходит примерно так:
Подскажите, как можно получить авторов книг fb2? Голову сломал, вроде и получаю списки, но натыкаюсь на проблему, когда автор не один, а тег middle-name (отчество) указан не для всех, тогда список неверного размера и теряется порядок
У меня выходит примерно так:
Python:
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element
import os
PATH = 'j:\\My_book'
class FB2Parser:
def __init__(self, folder):
self.folder = folder
self.filelist = self.ret_filelist_in_folder()
def get_title_publisher_info(self, nodes):
info = []
for file in self.filelist:
file = PATH + '\\'+ file
self.root = ET.parse(file)
self.cleanup()
info.append(self.root.find(nodes))
return info
def get_text_node(self, nodes, node):
info = self.get_title_publisher_info(nodes)
job = []
for element in info:
results = []
results.append(element.findall(node))
if len(results[0]) == 1:
job.append(results[0][0].text)
elif len(results[0]) > 1:
result = []
for res in results[0]:
result.append (res.text)
job.append(result)
else:
job.append('')
return job
def cleanup(self):
for element in self.root.iter():
element.tag = element.tag.partition('}')[-1]
def ret_filelist_in_folder(self):
filelist = []
for file in os.listdir(self.folder):
filelist.append(file)
return filelist
def run():
converter = FB2Parser(PATH)
converter.get_text_node('./description/title-info', 'author')
if __name__ == '__main__':
run()
Последнее редактирование модератором: