下载了《无人生还》的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. 网卡流量检测.py

    network_speed网卡流量检测 #!/usr/bin/env python #coding:utf-8 import sys import os import atexit import ti ...

  2. Android开发--AndroidManifest.xml文件解析

    参考文章:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html 一.关于AndroidManifest.xml AndroidMa ...

  3. HDOJ-1004(map)

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  4. c/c++面试12-18------关与sizeof那些事儿

    12 使用sizeof计算普通变量所占空间大小 (1)不同数据类型所占字节数不同(32位 64位系统不同) int----->4 double----->8 char-------> ...

  5. JAVA实现DIJKSTRA算法

    import java.util.Queue; import java.util.LinkedList; public class dijkstra{ public static void main( ...

  6. Atom 基本使用

    插件 simplified-Chinese-menu:汉化 Markdown-preview-plus:Markdown 实时预览 Atom 自带 Markdown-preview,这个插件是其增强版 ...

  7. TP5之上传多张图片

    1.效果图(每点击一次‘添加选项’,就会有一个新的 file 框来添加新的图片) 2.view <!--不要忘了引入jquery文件--> <!-- post传值方式和文件传输协议一 ...

  8. 算法学习--Day4

    今天写了两章题目,仍然是比较基础的内容.感觉时间好紧张,怕来不及,所以以后要加快速度了. 今天写的最多的是查找类题目,关键是二分查找的掌握. 题目描述 输入一个数n,然后输入n个数值各不相同,再输入一 ...

  9. HDU4247【瞎搞】

    题意: 给你4个小正方形的边长,让你求一个最小大正方形的边长以至于可以存这么四个正方形. 思路: 比划了一下...就是最大边+次大边,因为他们一定有交集. #include <cstdio> ...

  10. 快速删除node_modules文件夹

    前言 当安装了较多模块后,node_modules目录下的文件会很多,直接删除整个目录会很慢,下面介绍些快速删除node_modules目录的方法. 方法一:使用rimraf模块的命令 在全局安装ri ...