热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python对txt分段处理_使用python对txt格式的小说进行处理

vim的确是神器,可惜sed与vim不完全通用。这篇文章受《用vim对txt格式的小说重新排版》的启发,在此致谢!经常下载txt的电子书&

vim的确是神器,可惜sed与vim不完全通用。这篇文章受《

用vim对txt格式的小说重新排版》的启发,在此致谢!

经常下载txt的电子书,格式却不合心意,只好自己再处理。首要的就是处理段内换行。

原来的打算是定制一个vim模式,到时候处理小说时进入该模式,再使用各种快捷键。以此避免txt快捷键对日常编程的干扰。后来发现,vim不像emacs,可以定制自己的模式。(可能可以定制专用的vimrc解决,未经尝试)

于是转向脚本寻求解决办法。sed与awk是此中翘楚,首先试试。可惜早些日子学的sed已经忘的差不多了,找不到比较简洁清晰的解决办法。sed与grep类似,先读入一行,删除\n,进行各种处理,最后写入文件,再添上\n。 N可以读入下一行到当前模式匹配空间再行处理。但是我需要对整个文件进行匹配,暂时未找到解决办法。

只好再次转投python。Python有自己的re模块,应该没问题。re.sub可以进行替换。费了些时间的,是对中文的匹配。在vim中,可以用[^\x00-\xff]匹配双字节字符,然而python中却行不通。经过一番google,发现可以用[\x80-\xff]匹配汉字(perl同此,似乎两者对中文的正则支持还是有待改进)。

至此,问题初步解决:

#!/usr/bin/env python

#encoding=utf-8

import re

from sys import argv

if __name__ == '__main__':

if len(argv) != 2:

print 'usage: filename'

else:

fh = open(argv[1], 'r')

cOntent= fh.read()

out = re.sub('\n([\x80-\xff])', r'\1', content)

print out

规范行首:

#!/usr/bin/env python

#encoding=utf-8

import re

from sys import argv

if __name__ == '__main__':

if len(argv) != 2:

print 'usage: filename'

else:

fh = open(argv[1], 'r')

cOntent= fh.read()

out = re.sub(' +([\x80-\xff])', r' \1', content)

print out

当然,下载来的文档通常是GB2312,需要自己转换为utf8再行处理,可以参考我的《python 中文编码笔记》

在win下,有个优秀的文本处理工具可以利用,叫cnbook。在百度的fmddlmyy贴吧可以下载到最新版本。



推荐阅读
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 深入解析Python中的循环双向链表数据结构
    本文详细探讨了Python中循环双向链表的数据结构,包括其定义、特点及应用场景。文章首先介绍了循环双向链表的基本概念,随后深入分析了其核心操作,如节点的插入、删除和遍历等。最后,通过具体的Python代码示例,展示了如何高效地实现这些操作,帮助读者全面理解并掌握这一重要数据结构。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • SWIG 3.0.12 Windows官方版下载:实现C语言与PHP、Java、Python等多语言代码互调接口
    SWIG 3.0.12 Windows官方版是一款强大的接口生成工具,能够实现C语言与多种高级编程语言(如Java、C#)及脚本语言(如PHP、JavaScript、Python)之间的互操作性。它不仅支持跨语言调用,还提供了丰富的封装选项,确保了代码的高效性和可维护性。 ... [详细]
  • 本文为捷克马萨里克大学(作者:Bc.PavolLoffay)的硕士论文,共67页。本硕士论文的目标是开发一个开放源码的监控 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • Python 中使用 Numpy 实现高效对数加法运算函数 `logaddexp()` 的详解与应用 ... [详细]
  • BZOJ1034 详细解析与算法优化
    本文深入解析了BZOJ1034问题,并提出了优化算法。通过借鉴广义田忌赛马的贪心策略,当己方当前最弱的马优于对方最弱的马时进行匹配;同样地,若己方当前最强的马优于对方最强的马,也进行匹配。此方法在保证胜率的同时,有效提升了算法效率。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 在 Golang 应用中,频繁出现的 TIME_WAIT 和 ESTABLISHED 状态可能会导致性能瓶颈。本文探讨了这些状态产生的原因,并提出了优化与解决策略。通过调整内核参数、优化连接管理和使用连接池技术,可以有效减少 TIME_WAIT 的数量,提高应用的并发处理能力。同时,对于 ESTABLISHED 状态,可以通过合理的超时设置和错误处理机制,确保连接的高效利用和快速释放。 ... [详细]
author-avatar
秋夜里的寂寞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有