如果你是想从一个文本文件中“剥离出”内含的每篇新闻就需要根据这些新闻的起点与终点的文本特征来制定编程办法或选择现有工具或录制修改自定义的Office Word宏,而WordSmith也有类似功能
http://www.lexically.net/downloads/version6/HTML/index.html?splitter_index.htm
但,如果每篇新闻的前后没“区别性文本字符串特征”就几乎没全自动的办法了,就只能半自动了。
$message="请选择要处理的文本文件(本程序是李亮开发)"
Local $filepath1 = FileOpenDialog($message, ".", "Text (*.txt)", 1)
$file1=FileOpen($filepath1, 0)
$copy=0
$head=InputBox("开始字符串", "可以输入一个连续词组,提取从开始字符串所在的下一行开始")
$tail=InputBox("结束字符串", "可以输入一个连续词组,提取从结束字符串所在的前一行结束")
$file_number=0
$file_size=FileGetSize($filepath1)
While 1
Local $line = FileReadLine($file1)
$tmp=StringStripWS($line, 1)
If StringInStr($tmp, $head)=1 Then $copy=$copy+1
If StringInStr($tmp, $head)=0 AND $copy>0 Then $copy=$copy+1
If $copy=1 Then
$file_number=$file_number+1
If $file_number>1 Then FileClose($file2)
$file2=FileOpen("c:/" & string($file_number) & ".txt", 130)
EndIf
If StringInStr($tmp, $tail)=1 Then $copy=0
If FileGetPos($file1)>$file_size-1 Then ExitLoop
If $copy>1 Then FileWriteLine($file2, $line)
;MsgBox(4096, $copy, $line)
WEnd
FileClose($file1)
MsgBox(4096, "提取完毕", "请检查本程序所在文件夹,已经产生的1.txt、2.txt、……等文件")
果然是大神,好厉害!!!之前去开会了现在才看到,不过还是感谢感谢!!!我针对你的任务需求,做了个小程序,编程语言是AutoIt,已经上传到本帖的附件。
软件无需安装,解压缩到一个专门的独立的文件夹,然后再双击运行就可以了。但,千万不要直接双击你下载的压缩包,然后再直接双击里面的小程序,因为这样就导致解压缩到C盘的临时文件夹去了,就没法看到提取出来的一系列文本文件了。
程序运行起来,就首先弹出“文件选择对话框”让你选择要处理的TXT文件,然后就弹出“开始字符串的输入对话框”,你输入并点确定按钮,然后就弹出“结束字符串的输入对话框”,你输入并点确定按钮,就开始自动提取了。提取结果就是1.txt、2.txt、3.txt、……这些都产生在小程序所在的文件夹。
本程序只适合你目前描述的文本提取需求,提取的时候是从“开始字符串”所在行的下一行开始,然后结束于“下一个结束字符串”的所在行的前一行。
我的小程序应该是干净无毒的,下面链接是杀毒软件的扫描报告:
http://www.virscan.org/scan/9d546a6f75db20e229bd06d8e34ec913
在使用39款杀毒软件引擎进行在线扫描之后,只有2款国外的不著名的杀毒软件认为含病毒
如果你自己操作有任何障碍,你就直接上传你的那个文本文件到附件,我处理了上传和回帖给你,因为你也许遇到我的程序没法运行在你的64位操作系统或我的程序被识别为病毒之类的情况,就不折腾了。如果你有兴趣看源代码,下面就是……
代码:$message="请选择要处理的文本文件(本程序是李亮开发)" Local $filepath1 = FileOpenDialog($message, ".", "Text (*.txt)", 1) $file1=FileOpen($filepath1, 0) $copy=0 $head=InputBox("开始字符串", "可以输入一个连续词组,提取从开始字符串所在的下一行开始") $tail=InputBox("结束字符串", "可以输入一个连续词组,提取从结束字符串所在的前一行结束") $file_number=0 $file_size=FileGetSize($filepath1) While 1 Local $line = FileReadLine($file1) $tmp=StringStripWS($line, 1) If StringInStr($tmp, $head)=1 Then $copy=$copy+1 If StringInStr($tmp, $head)=0 AND $copy>0 Then $copy=$copy+1 If $copy=1 Then $file_number=$file_number+1 If $file_number>1 Then FileClose($file2) $file2=FileOpen("c:/" & string($file_number) & ".txt", 130) EndIf If StringInStr($tmp, $tail)=1 Then $copy=0 If FileGetPos($file1)>$file_size-1 Then ExitLoop If $copy>1 Then FileWriteLine($file2, $line) ;MsgBox(4096, $copy, $line) WEnd FileClose($file1) MsgBox(4096, "提取完毕", "请检查本程序所在文件夹,已经产生的1.txt、2.txt、……等文件")
果然是大神,好厉害!!!之前去开会了现在才看到,不过还是感谢感谢!!!
我立马下载下来试了一下,不过果然找不到切割后的文件。。。我把压缩文件直接解压成单独文件夹,词目也输入了,就是切完后的文件不知道去哪了,我找了C盘临时文件夹也木有。。。~~~~(>_<)~~~~ 果然还是太笨了。。。
我这边有一大批文本,几十个呢,就不好意思麻烦您了,还是自己学会方法操作,请大神继续赐教!!