我将文本直接转换为 epub,但在自动将 HTML 书籍文件拆分为单独的标题/章节文件时遇到问题。目前,下面的代码部分有效,但只创建了所有其他章节文件。因此,输出中缺少一半的头文件/章节文件。这是代码:
def splitHeaderstoFiles(fpath):
infp = open(fpath, 'rt', encoding=('utf-8'))
for line in infp:
# format and split headers to files
if '<h1' in line:
#-----------format header file names and other stuff ------------#
# create a new file for the header/chapter section
path = os.getcwd() + os.sep + header
with open(path, 'wt', encoding=('utf-8')) as outfp:
# write html top meta headers
outfp = addMetaHeaders(outfp)
# add the header
outfp = outfp.write(line)
# add the chapter/header bodytext
for line in infp:
if '<h1' not in line:
outfp.write(line)
else:
outfp.write('</body>\n</html>')
break
else:
continue
infp.close()
问题出现在代码底部的第二个“for 循环”中,当我寻找下一个 h1 标记来停止拆分时。我不能使用 seek() 或 tell() 倒回或后退一行,以便程序可以在下一次迭代中找到下一个标题/章节。显然,您不能在包含隐式 iter 或 next 操作对象的 for 循环中在 python 中使用这些。只是给出一个“不能做非零当前相对搜索”的错误。
我还尝试了代码中的while line != ' ' + readline()组合,它也给出了与上面相同的错误。
有谁知道在python中将不同长度的HTML标题/章节拆分为单独文件的简单方法?是否有任何特殊的 Python 模块(例如泡菜)可以帮助简化这项任务?
我正在使用 Python 3.4
我提前感谢您对这个问题的任何解决方案......