找回密码
 加入
搜索
楼主: wenquan79

[AU3基础] [已解]文本處理--將1文本的特定內容插到另文本指定位置中.

 火.. [复制链接]
发表于 2013-2-1 14:24:34 | 显示全部楼层
回复  afan
afan 兄:你好!此代碼試還是一樣,同樣是運行后完成不了,卡在下面的地方就不動了。我使用的 ...
wenquan79 发表于 2013-2-1 14:01



    看不出什么问题。你可以直接执行au3文件看看。或者打包上传你的txt文档。
以下多加了个判断,如果全都有匹配则写空4.txt
Local $str1 = FileRead('1.txt')
Local $str2 = FileRead('2.txt')
$ts = TimerInit()
Local $aSR2 = StringRegExp($str2, '(\S+)\h+(\S+)', 3)
If @Error Then Exit
For $i = 0 To UBound($aSR2) - 1 Step 2
        Assign('~' & $aSR2[$i], $aSR2[$i + 1])
Next
Opt('ExpandVarStrings', 1)
$str1 = StringRegExpReplace($str1, '(?:\S+\h+\S+\h+)(\S+)', '$0        $~$1$')
Local $FO = FileOpen('3.txt', 2 + 8)
FileWrite($FO, $str1)
FileClose($FO)

If StringInStr($str1, '$~') Then
        Local $str4 = StringRegExpReplace($str1, '(?s).+?(\S+)\h+\$~.+?\$\h+.+?', '$1______')
        $str4 = StringRegExpReplace($str4, '(?s)______[^_]+$', '')
        $str4 = StringRegExpReplace($str4, '______', @CRLF)
Else
        Local $str4 = ''
EndIf
$FO = FileOpen('4.txt', 2 + 8)
FileWrite($FO, $str4)
FileClose($FO)
Msgbox(0, '完成耗时', Round(TimerDiff($ts)))
 楼主| 发表于 2013-2-1 15:04:32 | 显示全部楼层
回复 16# afan
afan 兄,你好!我是直接復制你的代碼來運行的,但還有這個問題,我看一下au3的版本是3.3.9.4,系統是繁體Win7 32位的。

-------
>"D:\autoit3\SciTe\ACNWrapper\ACNWrapper.exe" /run /ErrorStdOut /in "D:\autoit3\new\bb.au3" /autoit3dir "D:\autoit3" /UserParams   
+>15:03:18 ?﹍?︽ ACNWrapper v.1.0.1.7
+> ============================================
+>?︽?挂:
+>        CPU疼琜:        X64
+>        ╰?疼琜:        X86
+>        ╰??ē:        0404
+>        ??ガЫ:        E0200804
+>        ???秖:        4095MB
+>        ??逞?:        1676MB
+>        巨?╰?:        WIN_7
+>        AU3?セ:        3.3.9.4
+> ============================================
>?︽ AU3Check (3.3.9.5)  ?﹍ヘ?:D:\autoit3
+>15:03:18 AU3Check ЧΘ[CODE]:0
>?︽:(3.3.9.4):D:\autoit3\autoit3.exe "D:\autoit3\new\bb.au3"
发表于 2013-2-1 15:12:15 | 显示全部楼层
回复 17# wenquan79


    你这天书信息鬼才看得懂…
直接运行是指双击au3文件运行,不要在编辑器中运行…
 楼主| 发表于 2013-2-1 15:25:20 | 显示全部楼层
回复 18# afan
afan 兄:抱歉!因編輯器是簡體漢化的,而系統是繁體的,所以變亂碼了,本想將那運行環境及結果貼過來讓你了解一下,反而更亂了。
          不在編輯器中運行,直接雙擊運au3文件也這樣,我等下找一下臺簡體的系統試試看,謝謝!
发表于 2013-2-1 16:23:15 | 显示全部楼层
回复 19# wenquan79

后面加的几行和上面的代码没有什么功能上的脚本区别,怎么加了就不行? 编译个试试~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-2-1 17:08:44 | 显示全部楼层
本帖最后由 wenquan79 于 2013-2-1 17:12 编辑

回复 20# afan
afan 兄:test.exe 在我這邊運行的結果與腳本的一樣,雙擊運行后,能產出3.txt,但一直不退出,CPU的使用率在50%左右,
         強行中止此程序CPU使用率恢復到正常的10%左右。謝謝!
发表于 2013-2-1 18:54:45 | 显示全部楼层
回复 21# wenquan79


    现在只能怀疑你的文本文档了,精简一下你的“1.txt”,“2.txt”,可以重现问题即可,上传我再试试
 楼主| 发表于 2013-2-2 09:38:27 | 显示全部楼层
回复 22# afan
afan 兄:如你所說真的是文本的問題,我試了只要刪除文本1前2行就可以,文本我已上傳,你再幫忙看看,謝謝!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-2-2 09:58:50 | 显示全部楼层
回复 23# wenquan79


    是的,用你上传的文件果真出现问题了。我看看先
发表于 2013-2-2 10:30:43 | 显示全部楼层
Local $str1 = FileRead('1.txt')
Local $str2 = FileRead('2.txt')
$ts = TimerInit()
Local $aSR2 = StringRegExp($str2, '(\S+)\h+(\S+)', 3)
If @Error Then Exit
For $i = 0 To UBound($aSR2) - 1 Step 2
        Assign('~' & $aSR2[$i], $aSR2[$i + 1])
Next
Opt('ExpandVarStrings', 1)
$str1 = StringRegExpReplace($str1, '(?:\S+\h+\S+\h+)(\S+)', '$0        $~$1$')
Local $FO = FileOpen('3.txt', 2 + 8)
FileWrite($FO, $str1)
FileClose($FO)

Local $aSR = StringRegExp($str1, '(\S+)\h+\$~.+?\$', 3), $str4 = ''
If Not @Error Then
        For $i = 0 To UBound($aSR) - 1
                $str4 &= $aSR[$i] & @CRLF
        Next
EndIf
$FO = FileOpen('4.txt', 2 + 8)
FileWrite($FO, $str4)
FileClose($FO)
Msgbox(0, '完成耗时', Round(TimerDiff($ts)))
 楼主| 发表于 2013-2-2 10:45:56 | 显示全部楼层
回复 25# afan
afan 兄:新的代碼經測試沒問題了,神速!我知道這表達式的東西很難懂,解釋起來也很深奧,但還是想麻煩兄費時幫忙解說一下,謝謝!
发表于 2013-2-4 15:12:00 | 显示全部楼层
afan果然厉害
发表于 2013-2-5 15:49:00 | 显示全部楼层
回复 4# afan
A大,怎么解析'$~$1$',研究了半天没有明白
发表于 2013-2-5 18:19:55 | 显示全部楼层
回复 28# xms77

同问
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 01:48 , Processed in 0.068529 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表