找回密码
 加入
搜索
查看: 3548|回复: 6

[AU3基础] 文本数据处理,排除筛选,生成新TXT文件

  [复制链接]
发表于 2012-5-19 09:40:32 | 显示全部楼层 |阅读模式
悬赏20金钱已解决
本帖最后由 elexy 于 2012-5-19 10:46 编辑

有两个文本文件 数据.txt   排除.txt,需要经过排除筛选生成 结果.txt,菜鸟不善长循环处理,求高手写段高效代码,双击即可完成操作,谢谢~!

意思就是 将 数据.txt  内的数据   用 排除.txt  里的数据 筛选一遍, 生成的结果中不能有  排除.txt 里面的内容。

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

最佳答案

发表于 2012-5-19 09:40:33 | 显示全部楼层
Local $sExclude = FileRead('排除.txt')
Local $sData = FileRead('数据.txt')
Local $OutFile = '结果.txt'
$sExclude = StringRegExpReplace($sExclude, '^\s+|(?:\r\n)+(?=\r\n)|\s+$', '')
Local $sReplace = '(?:' & StringRegExpReplace($sExclude, @CRLF, '|') & ')\r\n'
Local $sOut = StringRegExpReplace($sData, $sReplace, '')
FileDelete($OutFile)
FileWrite($OutFile, $sOut)
ShellExecute($OutFile)

评分

参与人数 2金钱 +30 贡献 +15 收起 理由
xms77 + 30 + 5 我想象中使用for语句来判断的,没想到Afan大 ...
user3000 + 10 高手出手就是不凡!估计很多人跟我一样看得头 ...

查看全部评分

发表于 2012-5-19 10:05:20 | 显示全部楼层
本帖最后由 Qokelate 于 2012-5-19 10:06 编辑

这种问题正则处理高效  学习楼下正则
发表于 2012-5-19 10:05:28 | 显示全部楼层
#include <file.au3>
Local $file, $remove
$file = FileRead(@ScriptDir& '\数据.txt')
_FileReadToArray(@ScriptDir& '\排除.txt', $remove)

For $i = 1 To $remove[0]
        If StringInStr($file, $remove[$i]) Then $file = StringReplace($file, $remove[$i], '') ; 清除 排除数据
Next
$file = StringRegExpReplace($file, '(?m)(?<=\n|\r)([\n\r]+)(?=[\r\n])', '') ; 去掉多余空行
;MsgBox(0, '', $file)
FileWrite(@ScriptDir & '\结果.txt', $file)

评分

参与人数 1金钱 +10 收起 理由
elexy + 10 感谢!

查看全部评分

 楼主| 发表于 2012-5-19 10:46:11 | 显示全部楼层
user3000 和 afan 都可以,但afan的更为高效精简,未引用<file.au3>
发表于 2012-5-19 12:32:10 | 显示全部楼层
路过。。看看。。说学习现在那是蛋疼。。。看不懂,纯顶
发表于 2012-5-19 16:22:11 | 显示全部楼层
正则可以解决之…
发表于 2012-5-19 18:51:59 | 显示全部楼层
对大文件不知哪个更有效率?
发表于 2012-5-19 21:27:55 | 显示全部楼层
回复 2# afan
我想象中使用for语句来判断的,没想到Afan大大用正则就搞定了,太厉害!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-19 03:29 , Processed in 0.084364 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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