#Perl# 給文本中的數(shù)字添加千分符

日常做完生信分析后钞诡,我們會對某些數(shù)據(jù)進行統(tǒng)計并做成一份統(tǒng)計結(jié)果,而統(tǒng)計結(jié)果出現(xiàn)數(shù)字是再正常不過的湃崩。100,1000,100000這樣的還好荧降,但是對于如基因表達count等數(shù)據(jù),幾百萬上千萬都不為過竹习。因此誊抛,為了方便閱讀,在合適的地方添加千分符是很有必要的整陌。如一萬是這樣的:10,000拗窃,100萬是這樣的:1,000,000瞎领。

今天安利一段對文檔中的數(shù)字添加千分符的perl程序:

use strict;
use warnings;
my $input =shift;
my $output=shift;

open IN,$input;
open OUT,">$output";
while(my $line=<IN>){

     if($line=~s/(\d+.{0,1}\d+)/&separate($1)/eg);  #匹配數(shù)字,每匹配到一次随夸,進行添加千分符操作

      print OUT $line;

}

sub separate{
       my $number=$1;
       if(substr($number,0,1)==0){return $number;}  #首位數(shù)字wei0九默,直接返回原數(shù)字
       if($number=~m/./){
                 return $number;   #如數(shù)字帶有小數(shù)點,直接返回原數(shù)字
       }
      if(length($number)>3){    #數(shù)字長度大于3宾毒,添加千分符
              my $l=length($number);
              my $i=int $l/3;    #對3取余數(shù)
              my $j=$l%3;       #對3取模
              my $newnum="";   #添加千分符后的變量
              my $h=substr($number,0,$j);
              for(;$i>0;$i--){      #循環(huán)添加千分符
                    if($j!=0){$newnum=$newnum.$h.",";}  #如模不為0驼修,則在第$j位置添加千分符
                    $h=substr($number,$j,3);
                     $j+=3;
             }
             $newnum=$newnum.$h;
             return $newnum;
      }
       else{return $number;}  #數(shù)字長度小于3,則返回原數(shù)字
    }
  close(IN);
  close(OUT);

這個程序思路不難诈铛,關(guān)鍵是要靈活運用模式匹配和函數(shù)乙各,即首先要知道自己要干嘛,然后邊寫邊想吧幢竹。

更多原創(chuàng)精彩內(nèi)容敬請關(guān)注生信雜談

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耳峦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子焕毫,更是在濱河造成了極大的恐慌蹲坷,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑飒,死亡現(xiàn)場離奇詭異循签,居然都是意外死亡,警方通過查閱死者的電腦和手機疙咸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門县匠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撒轮,你說我怎么就攤上這事聚唐。” “怎么了腔召?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扮惦。 經(jīng)常有香客問我臀蛛,道長,這世上最難降的妖魔是什么崖蜜? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任浊仆,我火速辦了婚禮,結(jié)果婚禮上豫领,老公的妹妹穿的比我還像新娘抡柿。我一直安慰自己,他們只是感情好等恐,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布洲劣。 她就那樣靜靜地躺著备蚓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囱稽。 梳的紋絲不亂的頭發(fā)上郊尝,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機與錄音战惊,去河邊找鬼流昏。 笑死,一個胖子當著我的面吹牛吞获,可吹牛的內(nèi)容都是我干的况凉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼各拷,長吁一口氣:“原來是場噩夢啊……” “哼刁绒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撤逢,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤膛锭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚊荣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體初狰,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年互例,在試婚紗的時候發(fā)現(xiàn)自己被綠了奢入。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡媳叨,死狀恐怖腥光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糊秆,我是刑警寧澤武福,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站痘番,受9級特大地震影響捉片,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汞舱,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一伍纫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昂芜,春花似錦莹规、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舞虱。三九已至,卻和暖如春债热,著一層夾襖步出監(jiān)牢的瞬間砾嫉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工窒篱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留焕刮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓墙杯,卻偏偏與公主長得像配并,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子高镐,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理溉旋,服務(wù)發(fā)現(xiàn),斷路器嫉髓,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 操作符優(yōu)先級 S03-operators/arith.t lines 46–342 S03-operators/p...
    焉知非魚閱讀 1,092評論 0 0
  • 范圍和范圍迭代器語法 .. 范圍操作符有各種在兩端帶有 ^符號的變體以表明把那個端點排除在范圍之外观腊。 它總會產(chǎn)生一...
    焉知非魚閱讀 839評論 0 0
  • 最近在看 Greg London 的Impatient Perl梧油,再次感受 Perl 的奇怪(不過之前用過 Rub...
    Pope怯懦懦地閱讀 979評論 1 5
  • 我愛你,不是當你枝繁葉茂州邢,當你是高山仰止當你美如畫卷時儡陨, 錦上添花,畢竟是tm特容易的一件事 我愛你量淌,我也摸不清楚...
    就是丑人閱讀 296評論 6 2