txt小说的句子被读书app硬生生分段读的处理

查看 57|回复 8
作者:ilvwapj0   
最近下了个小说,txt格式。用某听书app听小说时,经常碰到好好的一句话硬生生分两半读的情形。一看txt文本原来是每行后面都有换行符,惯不得分段读,不能怨人家读书app软件。
    开干。怎样去除不该换行的换行符呢?基本思路,除标点外的汉字后面一般不应该换行,写点代码简单处理了一下,听书效果好多了。
[Python] 纯文本查看 复制代码fp1=open(r"源文件.txt",'r',encoding="utf-8")#请先用记事本打开源文件另存为utf-8编码文件
fp2=open(r"目标文件.txt",'w',encoding="utf-8")
bd="!?,。、"“”〝〞#$%&'~()*+-/\:;<=>[]^`{}「」《》「」『』【】〖〗—…." #句尾可能会用到的标点
lineall=fp1.readlines()
line2all=[]
linet=""
for line in lineall:
    if line.strip()!="":
        if line.strip()[-1] in bd:            
            linet=linet+line
            line2all.append(linet)
            linet=""
        else:
            linet=linet+line[:-1]
fp2.writelines(line2all)
fp1.close()
fp2.close()
不过结果有点小问题,章节行尾的换行符也被搞掉了。重来,用高大上的正则。
[Python] 纯文本查看 复制代码import re
fp1=open(r"源文件.txt",'r',encoding="utf-8")
fp2=open(r"目标文件.txt",'w',encoding="utf-8")
lineall=fp1.readlines()
for line in lineall:
    if re.match('.+[\u4e00-\u9f5a]+\n',line):
        if not re.match('(^第.+?章)',line):
            fp2.write(line[:-1])
        else:
            fp2.write(line)
    else:
        fp2.write(line)
fp1.close()
fp2.close()
再看结果,好像还不错。听书app听起来舒服多了^_^


示范图.jpg (142.32 KB, 下载次数: 1)
下载附件
2024-8-10 15:55 上传

源文件, 硬生生

wuligiao   

某听书APP是什么APP,我用的TXT文本听书,就比较没感情的阅读,都这样吗?
ilvwapj0
OP
  


wuligiao 发表于 2024-8-11 09:11
某听书APP是什么APP,我用的TXT文本听书,就比较没感情的阅读,都这样吗?

阅读有没有感情最终还是取决于手机安装的tts质量
wuligiao   


ilvwapj0 发表于 2024-8-11 09:45
阅读有没有感情最终还是取决于手机安装的tts质量

哦?那不知阁下可有法子解决此种情况。
ilvwapj0
OP
  


wuligiao 发表于 2024-8-11 09:48
哦?那不知阁下可有法子解决此种情况。

本站搜MultiTTS,选个自己满意的
HA1AH   

没感情的朗读还不如直接看小说
小小小酥   

感谢大佬分享
XD001   

感谢大佬分享
jjm1178583316   

感谢大佬分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部