- 浏览: 146924 次
- 性别:
- 来自: 西安
最新评论
-
yukang1:
怎么关闭vbs呢 唉
利用VBScript在隐藏窗口中运行应用程序 -
greatghoul:
hanmiao 写道好用,我在 51CTO 上也找到了类似的解 ...
JFreeChart中文乱码和文字模糊问题的通用解决方案 | #java #chart -
hanmiao:
好用,我在 51CTO 上也找到了类似的解决方案,也是通过自定 ...
JFreeChart中文乱码和文字模糊问题的通用解决方案 | #java #chart -
janecd:
...
java BoxLayout布局心得 | #java #swing -
janecd:
java BoxLayout布局心得 | #java #swing
前段时间写了个简单的TXT2HTML小说转换器HTA版,现在拿python再实现一遍,自动按章节分割成多个HTML文件,并建立目录,方便阅读。
效果图:
脚本代码:
将其中的
刚刚接触python,感觉写的代码很不精简,请大家帮忙改进下。
效果图:
脚本代码:
# encoding: gbk # # 将txt小说分割转换成多个HTML文件 # # @author : GreatGhoul # @email : greatghoul@gmail.com # @blog : http://greatghoul.iteye.com import re import os # regex for the section title # sec_re = re.compile(r'第.+卷\s+.+\s+第.+章\s+.+') # txt book's path. source_path = 'f:\\佣兵天下.txt' path_pieces = os.path.split(source_path) novel_title = re.sub(r'(\..*$)|($)', '', path_pieces[1]) target_path = '%s%s_html' % (path_pieces[0], novel_title) section_re = re.compile(r'^\s*第.+卷\s+.*$') section_head = ''' <html> <head> <meta http-equiv="Content-Type" content="GBK"/> <title>%s</title> </head> <body style="font-family:楷体,宋体;font-size:16px; margin:0; padding: 20px; background:#FAFAD2;color:#2B4B86;text-align:center;"> <h2>%s</h2><a href="#bottom">去页尾</a><hr/>''' # escape xml/html def escape_xml(code): text = code text = re.sub(r'<', '<', text) text = re.sub(r'>', '>', text) text = re.sub(r'&', '&', text) text = re.sub(r'\t', ' ', text) text = re.sub(r'\s', ' ', text) return text # entry of the script def main(): # create the output folder if not os.path.exists(target_path): os.mkdir(target_path) # open the source file input = open(source_path, 'r') sec_count = 0 sec_cache = [] idx_cache = [] output = open('%s\\%d.html' % (target_path, sec_count), 'w') preface_title = '%s 前言' % novel_title output.writelines([section_head % (preface_title, preface_title)]) idx_cache.append('<li><a href="%d.html">%s</a></li>' % (sec_count, novel_title)) for line in input: # is a chapter's title? if line.strip() == '': pass elif re.match(section_re, line): line = re.sub(r'\s+', ' ', line) print 'converting %s...' % line # write the section footer sec_cache.append('<hr/><p>') if sec_count == 0: sec_cache.append('<a href="index.html">目录</a> | ') sec_cache.append('<a href="%d.html">下一篇</a> | ' % (sec_count + 1)) else: sec_cache.append('<a href="%d.html">上一篇</a> | ' % (sec_count - 1)) sec_cache.append('<a href="index.html">目录</a> | ') sec_cache.append('<a href="%d.html">下一篇</a> | ' % (sec_count + 1)) sec_cache.append('<a name="bottom" href="#">回页首</a></p>') sec_cache.append('</body></html>') output.writelines(sec_cache) output.flush() output.close() sec_cache = [] sec_count += 1 # create a new section output = open('%s\\%d.html' % (target_path, sec_count), 'w') output.writelines([section_head % (line, line)]) idx_cache.append('<li><a href="%d.html">%s</a></li>' % (sec_count, line)) else: sec_cache.append('<p style="text-align:left;">%s</p>' % escape_xml(line)) # write rest lines sec_cache.append('<a href="%d.html">下一篇</a> | ' % (sec_count - 1)) sec_cache.append('<a href="index.html">目录</a> | ') sec_cache.append('<a name="bottom" href="#">回页首</a></p></body></html>') output.writelines(sec_cache) output.flush() output.close() sec_cache = [] # write the menu output = open('%s\\index.html' % (target_path), 'w') menu_head = '%s 目录' % novel_title output.writelines([section_head % (menu_head, menu_head), '<ul style="text-align:left">']) output.writelines(idx_cache) output.writelines(['</ul><body></html>']) output.flush() output.close() inx_cache = [] print 'completed. %d chapter(s) in total.' % sec_count if __name__ == '__main__': main()
将其中的
引用
source_path = 'f:\\佣兵天下.txt'
修改成TXT小说的路径,再根据情况,稍微修改下匹配章节标题的正则引用
section_re = re.compile(r'^\s*第.+卷\s+.*$')
即可。脚本会在小说所在目录生成一个"文件名_html"的文件夹用于存放节割后的文件。
刚刚接触python,感觉写的代码很不精简,请大家帮忙改进下。
发表评论
-
python发送文件夹内容到邮箱
2012-02-07 00:48 2955由于我经常需要备份文件夹下的内容到邮件里面,每个打开邮件,上传 ... -
Cognos开发笔记
2012-02-07 00:43 1885前一段时间,完成了 ... -
python批量转换文件编码
2012-02-07 00:38 3214via: http://www.g2w.me/2012/02/ ... -
VIM中移动选中内容到备份文件
2012-02-07 00:33 1309在公司跟踪自己的工作计划时,我使用的 gtd 工具是 vim ... -
yuser
2011-06-08 18:19 0// ==UserScript== // @name ... -
Python的妙用,不解释
2011-06-02 17:32 1500import base64 filelist = [ ... -
config.js
2011-06-02 17:31 0写道 U0VSVkVSID0gJ1xcXFwxMC4xND ... -
util.js
2011-06-02 17:30 0写道 Ly8g5qih5p2/5YyW5a2X56ym5L ... -
teamtalk.js
2011-06-02 17:29 0写道 KGZ1bmN0aW9uKCkgewogICAgdm ... -
TeamTalk.hta
2011-06-02 17:28 0写道 PGh0bWw+CjxodGE6YXBwbGljYX ... -
JavaScript目录遍历
2011-05-20 17:18 0// 代码行数统计工具 var fso = new Ac ... -
巧用Scanner读取输入流中的所有内容
2011-05-18 14:51 1389URL url = new URL("http:// ... -
python备份表
2011-05-06 16:18 0import pyodbc import os impor ... -
Python DataViewListCtrl用法
2011-05-06 16:15 0import wx.dataview as dv sel ... -
python 对非规范化json的处理
2011-05-06 16:11 0json 格式: [{name: '浪人情歌', autho ... -
encode py
2011-04-01 17:32 0import base64 import os ... -
HTA无标题窗口拖动
2011-03-23 10:57 0var moveing = false,x,y; tit ... -
python db manager
2011-03-22 20:03 0#!/usr/bin/env python # coding: ... -
pyodbc with statement
2011-03-09 20:53 0class DataProvider(object): ... -
fdsafdsa
2011-03-03 17:43 0#!/usr/bin/env python # coding ...
相关推荐
在这个特定的项目"Python-Tensorflow实现图像分割的自动人像分割"中,我们将关注如何利用TensorFlow来实现高精度的人像分割任务。人像分割是计算机视觉领域的一个关键问题,其目标是将图像中的前景(如人物)与背景...
3. 训练脚本:用Python编写,用于加载数据、定义模型、设置损失函数和优化器,以及进行模型训练。 4. 测试与评估:包括评估指标(如IoU,精度,召回率)和可视化工具,帮助理解模型性能。 5. 预测接口:用于对新图像...
- **词法分析器(Lex)**:负责将源代码分割成一系列有意义的标记(Token),如关键字、标识符等。 - **语法分析器(Yacc)**:基于定义好的语法规则,对词法分析器产生的标记进行结构化处理,构造出语法树。 #### 三、...
本项目将深入探讨如何使用Python进行道路语义分割的深度学习模型实现,重点关注在机器学习框架中的应用。 首先,语义分割是计算机视觉的一个子领域,它涉及到对图像中的每个像素进行分类,从而划分出不同的对象或...
Python的`datetime`模块提供了丰富的日期和时间处理功能,包括`strptime()`用于将字符串解析为datetime对象,以及`strftime()`用于将datetime对象转换回字符串。 3. **按时间分割数据**:这个任务的关键在于找到...
Python提供了丰富的字符串处理方法,如`split()`(分割字符串)、`strip()`(去除两端空白字符)等。 #### 2.1.5 字符串输出颜色 在终端中显示彩色文本需要特殊的编码,如ANSI转义码。 ```python print("\033[31...
基于深度学习的场景语义分割python源码+项目说明.zip 本文创建了SUPnetw网络实现利用有限开放基准测试与无语义标签实际城市竣工测绘三维场景数据共同进行训练模型,提高城市三维场景点云语义分割的性能 SUPnet网络...
### Python中文标准库详解 #### 一、核心模块:Python编程的基础构件 ##### __builtin__模块 `__builtin__`模块包含了Python语言的核心内置函数和常量,是Python执行环境的一部分,无需导入即可使用。 ##### ...
【标题】"Python-基于分割的深度学习表面缺陷检测方法的一个Tensorflow实现"涉及的核心知识点是深度学习在图像处理中的应用,特别是针对表面缺陷检测。在这个项目中,开发者使用了TensorFlow这一强大的开源深度学习...
**Python 3.6 版本的 dlib 库详解** **一、dlib库介绍** dlib是一个功能丰富的C++工具包,主要用于处理各种计算机视觉和机器学习问题。尽管其主要为C++设计,但通过Python接口,dlib也能在Python环境中无缝使用,...
本教程主要围绕《OpenCV-Python-Tutorial-中文版》和《OpenCV入门教程》两本书籍展开,旨在帮助初学者快速掌握OpenCV在Python中的应用。 ### 1. 安装OpenCV 首先,要开始使用Python和OpenCV,我们需要安装必要的库...
当进行不同类型的数值运算时,Python会自动进行类型转换。这部分内容将解释这些转换规则。 ##### 5.2 原子 原子是构成更复杂表达式的最简单单位。这部分内容将介绍基本的原子类型,如数字、字符串、元组等。 ####...
- **将py文件编译成pyc**:Python解释器会在第一次运行.py文件时将其编译成字节码,并存储在.pyc文件中,这样下次运行相同脚本时可以直接加载.pyc文件加快执行速度。 - **for循环中的变量只读性**:在Python的for...
它提供了关于如何在旧版macOS上安装Python的信息。 #### 1.5 Red Hat Linux上的Python Red Hat Linux是企业级Linux发行版之一,本章节指导读者如何在其上安装Python。包括通过包管理器安装以及手动编译安装等方法...