Re: [問題] 這樣的需求得要自己寫程式嗎?
※ 引述《yoco.bbs@bbs.wretch.cc (眠月..)》之銘言:
> ※ 引述《buniro.bbs@ptt.cc (期待2008!)》之銘言:
> > 有一個2MB多的Unicode純文字檔,當中有很多重覆的字串"1"、"2"、"3"..."200",
> > 如果想將"85"之後的字串其數值都+1,也就是處理後"1"~"84"不變,"85"變"86"、
> > "86"變"87"...."200"變"201",那麼這有什麼現成的Editor可以使用嗎?還是非得
> > 自己寫個程式來處理?如果只能自己寫的話,各位板友建議用哪一種語言寫,對
> > 初學者來說比較容易?處理速度又以哪一種語言最快呢?還是速度都差不多?
> 我會的語言不多,
> 不過我覺得 Python 處理這個很快
> 速度的話,我不知道...
> > 謝謝大家的指導!
> 大家好像都假定問題是用 \n 分隔的單純數字?
> 原 po 好像沒有講單純是這樣?
> 那我會用 Python 配合 regex 來作...
-.o 挖~大家討論的好像獨缺php..
<?php
# $file = file_get_contents("filename.txt"); // 讀出
$file = '"1","2","3"..."200","201","202"'; // 模擬
echo $data = preg_replace_callback('/\"([[:digit:]]+)\"/s', "func", $file);
# file_put_contents("filename.txt", $data); // 寫回
function func ($file)
{
return '"'.($file[1] >= 85 ? $file[1]+1 : $file[1]).'"';
}
?>
(逃)...:x
> import re
> s = open(filename).read()
> n = re.findall('\d+', s) # n 存放所有的數字 token
> t = re.split('\d+', s) # t 存放所有的非數字 token
> o = '' # o 存放結果
> # 把切好的數字跟非數字接起來
> for i in range(len(n)) :
> o += t[i]
> # 如果數字大於 84 那就 +1
> if int(n[i]) > 84 :
> o += str( int( n[i] + 1 ) )
> else :
> o += n[i]
> o += t[len(n)]
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 61-221-116-50.hinet-ip.hinet.net
討論串 (同標題文章)
完整討論串 (本文為第 15 之 17 篇):