【求助】如何批量合并txt中不自然分段

在得到txt文档中,因为每一行指定了字符数而导致的不自然分段,即一句话未结束就有分段。正常的段与段之间有空行。如何批量的合并不自然分段?

如:
“  有人做了一块象牙片,半寸方,着去也没有什么;用显微镜一照,
却看见刻着一篇行书的《兰亭序》〔2〕。我想:显微镜的所以制造,
本为看那些极细微的自然物的;现在既用人工,何妨便刻在一块半尺方
的象牙板上,一目了然,省却用显微镜的工夫呢?

  张三李四是同时人。张三记了古典来做古文;李四又记了古典,去
读张三做的古文。我想:古典是古人的时事,要晓得那时的事,所以免
不了翻着古典;现在两位既然同时,何妨老实说出,一目了然,省却你
也记古典,我也记古典的工夫呢?”



如何批量转换为:
“  有人做了一块象牙片,半寸方,着去也没有什么;用显微镜一照,却看见刻着一篇行书的《兰亭序》〔2〕。我想:显微镜的所以制造,本为看那些极细微的自然物的;现在既用人工,何妨便刻在一块半尺方的象牙板上,一目了然,省却用显微镜的工夫呢?
  张三李四是同时人。张三记了古典来做古文;李四又记了古典,去读张三做的古文。我想:古典是古人的时事,要晓得那时的事,所以免不了翻着古典;现在两位既然同时,何妨老实说出,一目了然,省却你也记古典,我也记古典的工夫呢?”
 


第一步:把“壹个回车+壹个空格”都替换为“壹个回车加壹个空格”;
第二步:把“回车”都替换为“空”,也就是删除所有回车;
第三步:把“壹个回车加壹个空格”都替换为“壹个回车+壹个空格”
【关键操作】在Office Word中的“替换”对话框的“查找内容”的框要输入“^p ”,就表示“壹个回车+壹个空格”;
【关键原理】“正常合法回车符”的后面都有至少1个空格,异常非法的回车符后面都没有空格,所以,如果直接删除所有回车就会抹杀“合法回车”,虽然非法回车也遭到删除;所以,先采用某种手段让合法回车受到“保护或掩盖或转换”,所以“第一步”可以把“1个回车+1个空格”替换为“任何在正文中不会出现的连续的奇特的字符串”,让第二步不会抹杀合法回车,随即第三步就“恢复合法回车们的隐姓埋名的状态”。
在Office的Word的替换的时候,可以用“^p”表示回车符,这是两个符号组成,第一个是“6”的上档键的符号也叫做“插字符”,是个向上的三角形缺了一边。
 
回复: 解

非常感谢,但是不太明白的是“^p ”表示“壹个回车+壹个空格”,那么“壹个回车加壹个空格”在word的查找替换中怎么表示?
 
天灵灵地灵灵

第一步的“都替换为”可以是“天灵灵地灵灵”,如果你确信你的全部文字中没有这样的字符串的话;在这种情况下,第三步的“查找内容”就变成“天灵灵地灵灵”了。
 
回复: 天灵灵地灵灵

不行的说,因为不管是自然分段还是因为指定字数的分段,使用的回车都是合法的回车符~
 
如果需要删除一个文件中所有的“李”,但不要删除“李亮”中的“李”

那么,你就首先把“李亮”替换为“corpus4u”,再把所有的李字替换为空,也就是删除所有的李字,然后再把“corpus4u”替换为“李亮”
 
我提到的合法回车符和非法回车符

我提到的合法回车符和非法回车符都是正常回车符,我用这样的措辞是指某些回车是你需要的而被称呼为“合法”,而另一些回车符是你不需要的而被称呼为“非法”。
 
回复: 如果需要删除一个文件中所有的“李”,但不要删除“李亮”中的“李”

非常感谢,这么说我就明白原理啦~已经试验成功了!
 
最复杂的情况的解决方案

最复杂的情况是“需要保留的段落符号的前面没有空格”,在这种情况下无论每行的汉字数量是否固定,在这种情况下要剔除你不需要的段落符号都成为最复杂的“剔除不需要的强行回车”的任务了。

在最复杂情况下,就需要写一个Word宏,这个宏能自动删除“前后都是汉字或逗号或其他绝不可能出现在段落首尾的符号的回车符”,因为这种删除就是在删除“不需要的回车的某些类型”,而且这种删除是安全的,自动被删除的都是确实需要被删除的。

然后就需要第二个Word宏,它会自动停留在每个回车符上,让操作者点"是否"按钮而决定是否删除当前回车符,然后继续跳到下一个位置,反复循环到文件最后位置为止。

【备注】如果确实掌握了Word VBA编程且处理任务足够量大而值得做点编程,就可以先编程提取所有的回车符的前后符号,然后生成这些符号的"频率一览表",看看都有哪些情况,然后再编程做回车符的第一批安全的删除动作就效率更好且正确率100%,也为后续的半自动操作节省了大量时间。
 
半自动删除回车的宏代码与现成的Doc文件

附件中的Word文件是适合Office 2003版的,用Office 2003打开就能看到菜单栏的最后位置有“半自动删除回车”这个按钮,如果打开这个文件的时候,Office问你是否启用宏,你就点“是”。

Office 2007或后续版本就无法看到菜单栏的宏按钮,而只能从宏列表去点击而启动这个宏;

当然,Office 2003如果看不到菜单栏的宏按钮,也可以从“工具”的“宏”的“宏”去点击本宏而启动宏。

如果依然无法理解上面的操作和原理,可以看我的下面这个视频讲座就明白怎么使用别人现成的宏代码,怎么拷贝别人的宏代码到当前Word文件的“Visual Basic编辑器”中去
http://v.youku.com/v_show/id_XMjM5ODY0MzM2.html?f=5427313

宏代码如下……

Sub 半自动删除回车()
Do
Selection.MoveUntil Chr$(13)
answer = MsgBox("删除当前回车么?点取消则退出,点是则删除,点否则保留", vbYesNoCancel)
If answer = vbCancel Then Exit Do
If answer = vbYes Then Selection.Delete
If answer = vbNo Then Selection.Move unit:=wdCharacter, Count:=1
Loop
End Sub

 

附件

  • 半自动删除回车.doc
    29.5 KB · 浏览: 14
Back
顶部