下载了《无人生还》的txt版。传到手机,发现阅读器识别得不够好。

原文格式如下:

第一章

沃格雷夫法官先生新近离任退休,现在正在头等车厢的吸烟室里,倚角而坐,一 边喷着雪茄烟,一边兴致勃勃地读着《泰晤士报》上的政治新闻。
沃格雷夫放下报纸,眺望窗外。列车奔驰在西南沿海的萨默塞特原野儿他看了看 表,还有两小时路程。
沃格雷夫法官先从口袋里掏出一封信。尽管笔迹认不真切,但通篇行文措辞却异 常明确:“亲爱的劳伦斯……分别多年……务请光临印地安岛……景色迷人之至 ……离情别意,又何其多!……往日云烟……人天交融……向阳之乐……12点40 分由帕庭顿车站出发……在橡树桥恭候大驾……具名是位女的,花体签名是:康 斯坦斯卡尔明顿。
沃格雷夫法官先生苦苦思索着末一次见到康斯坦斯卡尔明顿夫人的具体日期,想 必有七年,不,八年了吧!那时她正去意大利准备享向阳之乐,同大自然和田夫 野老融为一体。后来,听说她又向前到了叙利亚,那里的阳光更盛,乐意更浓, 更能同大自然和阿拉伯牧民融为一体。
他想起来了,康斯但斯卡尔明顿就是这种妇女,一个人买上一座小岛住下,那显 得有多么神秘!沃格雷夫法官先生觉得自己推断得这样有理,不禁微微点起头来 。就这样点呀点呀的……。
他睡着了……。

我想要它变成这样子的:

第一章

一

沃格雷夫法官先生新近离任退休,现在正在头等车厢的吸烟室里,倚角而坐,一边喷着雪茄烟,一边兴致勃勃地读着《泰晤士报》上的政治新闻。

沃格雷夫放下报纸,眺望窗外。列车奔驰在西南沿海的萨默塞特原野儿他看了看表,还有两小时路程。

沃格雷夫法官先从口袋里掏出一封信。尽管笔迹认不真切,但通篇行文措辞却异常明确:“亲爱的劳伦斯……分别多年……务请光临印地安岛……景色迷人之至……离情别意,又何其多!……往日云烟……人天交融……向阳之乐……12点40分由帕庭顿车站出发……在橡树桥恭候大驾……具名是位女的,花体签名是:康斯坦斯卡尔明顿。

沃格雷夫法官先生苦苦思索着末一次见到康斯坦斯卡尔明顿夫人的具体日期,想必有七年,不,八年了吧!那时她正去意大利准备享向阳之乐,同大自然和田夫野老融为一体。后来,听说她又向前到了叙利亚,那里的阳光更盛,乐意更浓,更能同大自然和阿拉伯牧民融为一体。

他想起来了,康斯但斯卡尔明顿就是这种妇女,一个人买上一座小岛住下,那显得有多么神秘!沃格雷夫法官先生觉得自己推断得这样有理,不禁微微点起头来。就这样点呀点呀的……。

他睡着了……。

貌似编辑器做不到这么高级的替换,我要写个小程序了。那就python吧。

python的东西几乎全都忘光了。helloworld、数字转字符串、字符串截取、串内查找、字符串的遍历、文件读写、文件遍历……等等,全都要从网上查找用法。。。

磕磕碰碰地写出来了:

 # coding=utf8

 def is_section(s):
return (s!='') and (s[0]=='第') and (s[-1]=='章') def is_hz_number(s):
r=(s!='')
for ch in s:
if ('一二三四五六七八九十百'.find(ch)==-1):
r=False
return r def main():
filename='nobody.txt'
output='output.txt'
fp=open(filename, 'r')
fp2=open(output, 'w')
output=''
line_add='' count=0
for line in fp:
line=line.strip('\n')
if (line==''):
last_ch=''
else:
last_ch=line[-1]
# print(last_ch) #获取最后一个字符。支持中文哦~
line_add=line_add+line
if (last_ch in ['。', '”', '?', '!', ':']) or is_section(line_add) or is_hz_number(line_add):
output=line_add
line_add=''
print(output)
fp2.write(output+'\n\n')
count=count+1
# if count>10:
# break
fp2.write(line_add) main()

中间遇到这样的错误:

Traceback (most recent call last):
File "a.py", line 41, in <module>
main()
File "a.py", line 23, in main
for line in fp:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 14: illegal m
ultibyte sequence

苦思不得,只好一行行将源TXT文件排除,终于找到问题所在,原来是里面混入了一些乱码,象这样:

。安全,保险!堑模笤谧约杭依镆谎鹊保*

删掉就好了。

另:有个地方不大明白:我在py文件头注明了 utf8 编码格式,在程序中使用了 readline、line[-1]截取、以及其它字符串函数,居然对GBK的文本文件处理得很好,估计这是python3的特性之一吧,我误打误撞地成功了。

(注:本文毫无技术含量,仅做为练手的记录。)

用python格式化小说txt的更多相关文章

  1. python爬虫小说代码,可用的

    python爬虫小说代码,可用的,以笔趣阁为例子,python3.6以上,可用 作者的QQ:342290433,汉唐自远工程师 import requests import refrom lxml i ...

  2. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  3. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  4. python 格式化 json输出

    利用python格式化json 字符串输出. $ echo '{"json":"obj"}' | python -m json.tool 利用python -m ...

  5. Python爬虫——小说

    #encoding:utf8 import re import urllib2 url = 'http://www.23us.com/html/55/55304/' request = urllib2 ...

  6. python格式化输出【转】

    今天写代码时,需要统一化输出格式进行,一时想不起具体细节,用了最笨的方法,现在讲常见的方法进行一个总结. 一.格式化输出 1.整数的输出 直接使用'%d'代替可输入十进制数字: >>> ...

  7. (转)Python格式化字符 %s %d %f

    Python格式化字符 %s %d %f 原文:http://blog.csdn.net/huangfu77/article/details/54807835 格式 描述%% 百分号标记 #就是输出一 ...

  8. vim调用python格式化json数据

    vim调用python格式化json数据 November 30, 2013GNU/Linuxpython3, Vimopenwares python有个标准模块叫json,用于编码/解码,序列化/按 ...

  9. [20191106]善用column格式化输出.txt

    [20191106]善用column格式化输出.txt # man columnDESCRIPTION     The column utility formats its input into mu ...

随机推荐

  1. 【Boost】boost库asio详解3——io_service作为work pool

    无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE.使用io_service作为处理工作的work pool,可以 ...

  2. 使用Rest api管理Ceph网关

    背景 开发基于Ceph RadosGW的微服务,需要实现调用方可以通过rest api就能创建用户,获取用户信息等功能. 实现 Ceph的RadosGW自身就有该功能,这些创建用户.获取用户信息.获取 ...

  3. IReport制作报表——日期时间显示格式

    转自:https://blog.csdn.net/linglinglu/article/details/9022679?utm_source=blogxgwz2 IReport工具在制作报表的时候,会 ...

  4. CodeForces 1110G. Tree-Tac-Toe

    题目简述:给定$n$个节点的树,其中一些节点被染成了白色(其余节点未染色).黑白双方博弈,白先动.轮到黑(白)方时,选择树上的一个未染色的节点并将其染成黑(白)色.率先达成三连色(即存在三个节点$a, ...

  5. B - School Marks

    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Description Little ...

  6. python 三元表达式 列表推导式,生成器表达式。递归,匿名函数, 内置函数

    三元表达式 三元表达式仅应用于: 1.条件成立返回一个值 2.条件不成立返回一个值 res = x if x>y else y print(res) name= input("姓名&g ...

  7. sfc命令

    开始—>运行—>再输入“sfc /scannow”(不含引号),“sfc”是“系统文件检测”程序,它是一个在命令提示符下使用的实用程序,只有是管理员才能使用该程序,这个程序的作用就是检测系 ...

  8. 数据结构关于AOV与AOE网的区别

    AOV网,顶点表示活动,弧表示活动间的优先关系的有向图. 即如果a->b,那么a是b的先决条件. AOE网,边表示活动,是一个带权的有向无环图, 其中顶点表示事件,弧表示活动,权表示活动持续时间 ...

  9. P4363 [九省联考2018]一双木棋chess(对抗搜索+记忆化搜索)

    传送门 这对抗搜索是个啥玩意儿…… 首先可以发现每一行的棋子数都不小于下一行,且局面可由每一行的棋子数唯一表示,那么用一个m+1进制数来表示当前局面,用longlong存,开map记忆化搜索 然后时间 ...

  10. Eclipse-Hadoop-Plugin编译

    1 JDK配置 1.1 安装JDK 具体可以百度,网上教程很多,有JAVA开发环境的都是已经安装的. 1.2 配置环境变量 设置JAVA_HOME.CLASSPATH.PATH等.具体可以百度,有JA ...