找回密码
 加入
搜索
查看: 6312|回复: 14

[效率算法] 大概有5M数据文字,我想把文字拆分开来,变成2个字一行!只要汉字

  [复制链接]
发表于 2010-9-20 01:55:07 | 显示全部楼层 |阅读模式
本帖最后由 qq123123 于 2011-4-19 19:24 编辑

$sl = 2


$neirongxing = FileOpen("行号.ini", 0);读取指定数量.
$neirongxing_2 = FileReadLine ($neirongxing, 1)
FileClose($neirongxing)

;~ FileDelete("读取完毕.ini")行号\1.ini
$file = FileOpen("文本.txt", 0)
$hao = FileRead($file,62000000)
$hao_1 = StringStripWS ($hao, 8)  ;删除所有空格
StringStripCR ( $hao_1 );删除字符串中的所有回车( Chr(13) ). )
FileClose($file)

$text17 = StringRegExpReplace($hao_1,'[abcdefghijklmnopqrstuvwxyz0123456789]', '')
$dq = FileOpen("临时存放.txt", 10);读取指定行的字符.
FileWrite ($dq, $text17);追加数据.
FileClose($dq)

$dq = FileOpen("临时存放.txt", 0);读取指定行的字符.
$hao_ok = FileRead($dq,62000000)

$i = $neirongxing_2
While $i <= 62000000
$hao_ok2 = stringMid ($hao_ok, $i, 2)
$xie = FileOpen("处理好数据.ini", 1);把帐号组合在一起
FileWrite($xie, $hao_ok2&@CRLF) ;数据文件尾追加数据.
FileClose($xie)
ToolTip( $hao_ok2,0,682)
;~  MsgBox(0, "读取的数据:", $hao_ok2)
    $i = $i + $sl
                        $xing = FileOpen("行号.ini", 2)
                        FileWriteLine($xing, $i) ;向此前已打开的文本文件尾追加一行数据.
                        FileClose($xing)
WEnd
FileClose($dq)
TrayTip("",$text17, 5)
Sleep(2000)
Exit



上面这个自己摸索出来了,但是文字读到10万左右的时候,电脑巨卡,基本1秒才跳一次
我有一个记事本 文本.txt

里面都是文字,有,逗号,句号,分号,字母,数字……这些
我想要符号都删除点,只剩下文字,
大概有5M数据文字,我想把文字拆分开来,变成2个字一行。
小弟水平就这样了,诚心请教,有没有别的办法提升一下,或者一个语法提示一下

最后批处理,能处理吗?
 楼主| 发表于 2010-9-20 01:58:21 | 显示全部楼层
干县令,其于大达亦远矣。”“县”乃古“悬”字,高也;“令”,美也,“干”,追求。是说举着细小的钓竿钓绳,奔走于灌溉用的沟渠之间,只能钓到泥鳅之类的小鱼,而想获得大鱼可就难了。靠修饰琐屑的言论以求高名美誉,那和玄妙的大道相比,可就差得远了。春秋战国时,学派林立,百家争鸣,许多学人策士为说服王侯接受其思想学说,往往设譬取喻,征引史事,巧借神话,多用寓言,以便修饰言说以增强文章效果。庄子认为此皆微不足道,故谓之“小说”,即“琐屑之言,非道术所在”“浅识小道”,也就是琐屑浅薄的言论与小道理之意,正是小说之为小说的本来含义。
 楼主| 发表于 2010-9-20 01:58:36 | 显示全部楼层
我的文本内容,就和上面这个一样的!
发表于 2010-9-20 03:33:47 | 显示全部楼层
?>
{:face (382):}
发表于 2010-9-20 09:42:55 | 显示全部楼层
fileread说明:
若给定的是文件名而不是文件句柄,那么该文件将在函数执行期间被打开并关闭,如果打开的文件较大则会比使用文件句柄要慢得多.

local $str,$hfile,$read
$hfile=FileOpen("a.txt");这里给文件名
$size=FileGetSize('a.txt')
For $i =0 To $size Step 2
        FileSetPos($hfile,$i,0)
        $read=FileRead($hfile,4);中文用4,英文用2
        $str&=$read&@CRLF
Next
FileClose($hfile)
FileWrite("b.txt",$str);输出的文件名

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-9-20 10:16:26 | 显示全部楼层
fileread说明:
若给定的是文件名而不是文件句柄,那么该文件将在函数执行期间被打开并关闭,如果打开的文件 ...
3mile 发表于 2010-9-20 09:42


这种方式估计会造成部分乱码~
发表于 2010-9-20 10:59:56 | 显示全部楼层
fileread说明:
若给定的是文件名而不是文件句柄,那么该文件将在函数执行期间被打开并关闭,如果打开的文件较大则会比使用文件句柄要慢得多.
配置低也慢的
 楼主| 发表于 2010-9-20 23:40:02 | 显示全部楼层
$text1 = StringRegExpReplace($hao_1,"[︱︶[]^}″︽﹃』〔〕︺<>÷∝≮■△◎┌┏┐┑└┕┖┗┘┙┛├┝┞┟┡┢┣┤┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┺┿╂╆╈╊¢£§‥♂Ⅰ②Ⅱ③ⅲ4⒌Ⅵ7⑺⒎]", '')
$text2 = StringRegExpReplace($text1,"[Ⅶ⑻⒏9⑼⒐⑩⑽⒑⑾⒒⑿⒓⒀⒔⒁⒕⒂⒖⒃⒗деёиОПРСТУФХЦЧШЩЪЫЬЭЮЯグぐヶケけ⒄⒘⒅⒙⒆⒚⒛AɑB℃DEêFGɡLńňoRUúùüūǜǚǖxZενΤΥабг]", '')
$text3 = StringRegExpReplace($text2,"[ゲげコこゴごサさザざシしジじスたダだチちヂぢッっツつヅづテてデでトとドどナなニにヌぬすズずセせゼぜソそゾぞタ]", '')
$text4 = StringRegExpReplace($text3,"[ネねノのハはㄖㄗㄚㄥバばパぱヒミみムメモュらリレヲをㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄓㄔㄕひビびピぴフふブぶプぷヘベペぺホ]", '')
$text5 = StringRegExpReplace($text4,"[HǔθξδκλπWζNαVPTS〗MòO〈≡≈“ ̄`:*︵@*;&!--―Pò┚ǘㄒ?Φμ⌒〗Φ艹┥OV?|:.~!,》—。《“”、-…QKlJI⌒=┒⊥┍≈≌∽∩≡∮∈∧∥±√∏”∑∪×】》『【《〖'〉〈’@±‘?_?;::θ!]", '')
$text6 = StringRegExpReplace($text5,"[вΧΩΦψδθκμσρ?6⑹⑷⑵⒈⒋⑴υ⑶⒉τ2λ⑸⒊ΡπξοιΣα⒍ηζγβW^」@@?》?;:┠┓┎⊥≡≈∽∷∶∮∫∪∩〈〉〈∨《∧∥〉∠∈×=±⊙〗〖「『【」》《〉:uXc(-)=,./~()ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyztCO0123456789013568]", '')



象这些字符,过滤不掉,郁闷了,有什么办法处理一下吗?
 楼主| 发表于 2010-9-20 23:40:51 | 显示全部楼层
$file = FileOpen("文本.txt", 0)
$hao = FileRead($file,62000000)
$hao_1 = StringStripWS ($hao, 8)  ;删除所有空格
StringStripCR ( $hao_1 );删除字符串中的所有回车( Chr(13) ). )
FileClose($file)


$text1 = StringRegExpReplace($hao_1,"[︱︶[]^}″︽﹃』〔〕︺<>÷∝≮■△◎┌┏┐┑└┕┖┗┘┙┛├┝┞┟┡┢┣┤┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┺┿╂╆╈╊¢£§‥♂Ⅰ②Ⅱ③ⅲ4⒌Ⅵ7⑺⒎]", '')
$text2 = StringRegExpReplace($text1,"[Ⅶ⑻⒏9⑼⒐⑩⑽⒑⑾⒒⑿⒓⒀⒔⒁⒕⒂⒖⒃⒗деёиОПРСТУФХЦЧШЩЪЫЬЭЮЯグぐヶケけ⒄⒘⒅⒙⒆⒚⒛AɑB℃DEêFGɡLńňoRUúùüūǜǚǖxZενΤΥабг]", '')
$text3 = StringRegExpReplace($text2,"[ゲげコこゴごサさザざシしジじスたダだチちヂぢッっツつヅづテてデでトとドどナなニにヌぬすズずセせゼぜソそゾぞタ]", '')
$text4 = StringRegExpReplace($text3,"[ネねノのハはㄖㄗㄚㄥバばパぱヒミみムメモュらリレヲをㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄓㄔㄕひビびピぴフふブぶプぷヘベペぺホ]", '')
$text5 = StringRegExpReplace($text4,"[HǔθξδκλπWζNαVPTS〗MòO〈≡≈“ ̄`:*︵@*;&!--―Pò┚ǘㄒ?Φμ⌒〗Φ艹┥OV?|:.~!,》—。《“”、-…QKlJI⌒=┒⊥┍≈≌∽∩≡∮∈∧∥±√∏”∑∪×】》『【《〖'〉〈’@±‘?_?;::θ!]", '')
$text6 = StringRegExpReplace($text5,"[вΧΩΦψδθκμσρ?6⑹⑷⑵⒈⒋⑴υ⑶⒉τ2λ⑸⒊ΡπξοιΣα⒍ηζγβW^」@@?》?;:┠┓┎⊥≡≈∽∷∶∮∫∪∩〈〉〈∨《∧∥〉∠∈×=±⊙〗〖「『【」》《〉:uXc(-)=,./~()ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyztCO0123456789013568]", '')
;~ '[,"》—?。《“”、-…:СX(-)=,./~()ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]', '')
$file = FileOpen("临时存放.txt", 2)
FileWrite($file, $text6)
FileClose($file)
发表于 2010-9-20 23:46:26 | 显示全部楼层
论坛有匹配汉字的方法,多搜索下
如果你有完整的测试附件,可能早解决了

而且你对给予帮助的人连一句话都没有,更不用说谢了。继续自言自语吧。
 楼主| 发表于 2010-9-20 23:54:45 | 显示全部楼层
本帖最后由 qq123123 于 2010-9-20 23:58 编辑

回复 10# afan


原来得到了别人的帮助,就一定要在百忙之中抽时间出来说“谢谢”

晚一些都不行!
特别是在问题没有完全处理好,还在努力学习中……

原来帮助了别人,就一定要得到别人对你说“谢谢”


对所有热爱回答问题,和帮助新手的AU3 迷

郑重说声“谢谢”
发表于 2010-9-22 18:53:23 | 显示全部楼层
汉字在计算机内是用内码表示的。 具体范围是B0A0-----F7FF  你试试通过ASC函数判断ASC值的范围试试。
发表于 2010-9-22 23:28:44 | 显示全部楼层
回复 12# lanfengc
asc函数返回值应该是UNICODE码。
_stringtohex函数返回的才是内码吧。

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-9-23 17:47:51 | 显示全部楼层
可以使用匹配汉字的方法!
发表于 2010-9-23 19:35:59 | 显示全部楼层
回复 12# lanfengc


    感觉这种思路可取
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 02:12 , Processed in 0.080711 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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