[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现将txt文本根据一定字数之后的某个标点符号进行分割

本帖最后由 pcl_test 于 2016-9-5 12:41 编辑

【求助】txt分割根据一定字数之后的某个标点分割
是这样,一个txt文件,我想通过200个字左右的最近的一个句号,进行txt分割。主要是想实现txt分割之后有一定的阅读性,直接按照字数或者大小分割 没有课阅读性。希望有个大神能够 分享一个。

再解释下:随便一个小说,采集下来通过识别他的字数查找第200个字符左右最近的一个句号,然后分割,然后输出保存为txt

TOP

小说不是按节按章划分好的么,还是说没有划分段落?采集的哪个网站的小说?

TOP

六脉神剑...
  1. @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
复制代码

TOP

  1. //&cls&dir /a-d/b "小说.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject'), s='';
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     var line = WSH.StdIn.ReadLine(), fname, fext;
  5.     line.replace(/(.+)(\.[^\.]+)/, function($0,$1,$2){fname=$1;fext=$2});
  6.     if(!fso.FolderExists(fname))fso.CreateFolder(fname);
  7.     var text = fso.OpenTextFile(line, 1).ReadAll();
  8.     //指定字数量和分割的标点符号
  9.     var m = text.match(/[\s\S]{200,}?([。!?!\?]”|[。!?!\?\n])|[\s\S]+$/g);
  10.     s+='---------------------'+line+'---------------------\r\n';
  11.     WSH.echo('开始分割'+line+'……');
  12.     for(var i=0;i<m.length;i++){
  13.         var newfname = fname+'_'+(i+1)+fext;
  14.         fso.CreateTextFile(fname+'\\'+newfname, 2).Write(m[i]);
  15.         s+=newfname+'  '+m[i].length+'个字符\r\n';
  16.     }
  17.     WSH.echo('分割完成!共分成'+i+'个文件\r\n');s+='\r\n';
  18. }
  19. fso.CreateTextFile('分割记录.log', 2).Write(s);
  20. WSH.echo('Done');
复制代码

TOP

返回列表