用python格式化小说txt
下载了《无人生还》的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的更多相关文章
- python爬虫小说代码,可用的
python爬虫小说代码,可用的,以笔趣阁为例子,python3.6以上,可用 作者的QQ:342290433,汉唐自远工程师 import requests import refrom lxml i ...
- Python格式化字符串~转
Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...
- Python格式化字符串和转义字符
地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义 符 号 说 明 ...
- python 格式化 json输出
利用python格式化json 字符串输出. $ echo '{"json":"obj"}' | python -m json.tool 利用python -m ...
- Python爬虫——小说
#encoding:utf8 import re import urllib2 url = 'http://www.23us.com/html/55/55304/' request = urllib2 ...
- python格式化输出【转】
今天写代码时,需要统一化输出格式进行,一时想不起具体细节,用了最笨的方法,现在讲常见的方法进行一个总结. 一.格式化输出 1.整数的输出 直接使用'%d'代替可输入十进制数字: >>> ...
- (转)Python格式化字符 %s %d %f
Python格式化字符 %s %d %f 原文:http://blog.csdn.net/huangfu77/article/details/54807835 格式 描述%% 百分号标记 #就是输出一 ...
- vim调用python格式化json数据
vim调用python格式化json数据 November 30, 2013GNU/Linuxpython3, Vimopenwares python有个标准模块叫json,用于编码/解码,序列化/按 ...
- [20191106]善用column格式化输出.txt
[20191106]善用column格式化输出.txt # man columnDESCRIPTION The column utility formats its input into mu ...
随机推荐
- bzoj4066
KD-tree 强制在线就不能愉快的做这道题了. 我们用KD-tree维护平面上的点,这样建出来的树高大概是log,复杂度过得去,但是插入过多会使树深很深,这样就能卡死,那么我们每个10000次插入就 ...
- Ubuntu 图形处理软件
sudo add-apt-repository ppa:dhor/myway sudo apt-get update sudo apt-get install photivo
- could not get wglGetExtensionsStringARB
第一种解释: 现象: 启动应用程序时,在Emulator中,提示"could not get wglGetExtensionsStringARB". 原因分析: device sp ...
- 【转载】“error LNK1169: 找到一个或多个多重定义的符号”的解决方法
c++的小细节的地方 原文地址:https://blog.csdn.net/xiaosu123/article/details/5665729 问题描述如下: 有 三个源文件,A.h.B.cpp.C. ...
- VR视频原理
VR视频,这里指的是沉浸式全景视频,基本场景是观影者戴上显示头盔(如cardboard),在其中通过头部的转动可以看到全景视频的每个方向的图像.同时也能听到来自各个方向的声音,声音也会随着头部的转动而 ...
- CodeForces 600C【构造】
题意: 在原字符串中修改数量最少,然后保证最小字典序. #include <bits/stdc++.h> using namespace std; typedef long long LL ...
- Unity中资源动态加载的几种方式比较
http://blog.csdn.net/leonwei/article/details/18406103 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安 ...
- 爬虫—使用Requests
一,安装 pip install requests 二,基本用法 1.简单示例 import requests res = requests.get('https://www.baidu.com') ...
- 【源码系列】Eureka源码分析
对于服务注册中心.服务提供者.服务消费者这个三个主要元素来说,服务提供者和服务消费者(即Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者(服务注册.续约.下线等),而注册中心主要是处理 ...
- Lock1
分布式锁1 Java常用技术方案 前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际 ...