标题: [文本处理] 批处理如何实现将txt文本根据一定字数之后的某个标点符号进行分割 [打印本页]
作者: xcjm688 时间: 2016-9-5 10:12 标题: 批处理如何实现将txt文本根据一定字数之后的某个标点符号进行分割
本帖最后由 pcl_test 于 2016-9-5 12:41 编辑
【求助】txt分割根据一定字数之后的某个标点分割
是这样,一个txt文件,我想通过200个字左右的最近的一个句号,进行txt分割。主要是想实现txt分割之后有一定的阅读性,直接按照字数或者大小分割 没有课阅读性。希望有个大神能够 分享一个。
再解释下:随便一个小说,采集下来通过识别他的字数查找第200个字符左右最近的一个句号,然后分割,然后输出保存为txt
作者: GNU 时间: 2016-9-5 11:03
试试这3个代码
http://bbs.bathome.net/thread-2104-2-1.html#pid12065
http://bbs.bathome.net/thread-2104-3-1.html#pid12158
http://bbs.bathome.net/thread-2104-3-1.html#pid12183
作者: pcl_test 时间: 2016-9-5 12:47
小说不是按节按章划分好的么,还是说没有划分段落?采集的哪个网站的小说?
作者: CrLf 时间: 2016-9-5 12:55
六脉神剑...- @mshta http://bathome.net/s/hta "n=0;type('你的小说.txt').replace(/.{200,}?。|.+/g,function(str){save(str,++n + '.txt');return n+'.txt 长度为 ' + str.length+' 字符\r\n'})"|more
复制代码
作者: pcl_test 时间: 2016-9-5 23:35
- //&cls&dir /a-d/b "小说.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- var fso = new ActiveXObject('Scripting.FileSystemObject'), s='';
- while(!WSH.StdIn.AtEndOfStream){
- var line = WSH.StdIn.ReadLine(), fname, fext;
- line.replace(/(.+)(\.[^\.]+)/, function($0,$1,$2){fname=$1;fext=$2});
- if(!fso.FolderExists(fname))fso.CreateFolder(fname);
- var text = fso.OpenTextFile(line, 1).ReadAll();
- //指定字数量和分割的标点符号
- var m = text.match(/[\s\S]{200,}?([。!?!\?]”|[。!?!\?\n])|[\s\S]+$/g);
- s+='---------------------'+line+'---------------------\r\n';
- WSH.echo('开始分割'+line+'……');
- for(var i=0;i<m.length;i++){
- var newfname = fname+'_'+(i+1)+fext;
- fso.CreateTextFile(fname+'\\'+newfname, 2).Write(m[i]);
- s+=newfname+' '+m[i].length+'个字符\r\n';
- }
- WSH.echo('分割完成!共分成'+i+'个文件\r\n');s+='\r\n';
- }
- fso.CreateTextFile('分割记录.log', 2).Write(s);
- WSH.echo('Done');
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |