亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1913 | 回復(fù): 9
打印 上一主題 下一主題

請教:提取含內(nèi)容較多的列 [復(fù)制鏈接]

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-08-18 20:29 |只看該作者 |倒序瀏覽
假如文本A各列以tab分隔,其中最后一列包含多個以“;”隔開的內(nèi)容,并且內(nèi)容間有空格:

11    000    3DS    +    S_I "C1,T_,2/";ID "D,34";SSS "TTT"
.....
  
假如要提取第2,3列和最后一列中的下劃線內(nèi)容(不要雙引號),分為4列,輸出到文件B,列重新排序,并且加上各列的名稱,用數(shù)組可以實現(xiàn)嗎?

AA    BB    CC    DD
C1,T_,2/    000    D,34    3DS  
.....  

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
2 [報告]
發(fā)表于 2016-08-18 20:41 |只看該作者
本帖最后由 sunzhiguolu 于 2016-08-18 20:42 編輯
提取第2,3列和最后一列中的下劃線內(nèi)容(不要雙引號),分為4列,輸出到文件B,列重新排序,并且加上各列的名稱,用數(shù)組可以實現(xiàn)嗎?

1.> 列重新排序看出來了, 并且加上各列的名稱. 如何理解?
2.> 用數(shù)組可以實現(xiàn)嗎? 沒明白是啥意思!

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
3 [報告]
發(fā)表于 2016-08-18 20:59 |只看該作者
回復(fù) 2# sunzhiguolu

輸出就是上面的結(jié)果,每列分別以AA,BB,CC,DD作為名稱。

假如用數(shù)組的話,原始文件讀進@A:
while(<IN>){
@A = split("\t",$_);

}  

提取內(nèi)容到@B

最后一列不知道怎么提取內(nèi)容。。。。還有每列新命名這樣寫可以嗎? print OUT "AA\tBB\tCC\tDD\t";

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
4 [報告]
發(fā)表于 2016-08-18 21:21 |只看該作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. local $_ = qq (11    000    3DS    +    S_I "C1,T_,2/";ID "D,34";SSS "TTT");
  5. my @aHead = qw /AA BB CC DD/;
  6. if (m/\A\S+\s+(?<BB>\d+)\s+(?<DD>\w+)[^"]+"(?<AA>[^"]+)"[^"]+"(?<CC>[^"]+)/){
  7.     print "@aHead\n@+{@aHead}\n";
  8. }
復(fù)制代碼
perl abc.pl
------------------------------------
AA BB CC DD
C1,T_,2/ 000 D,34 3DS

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
5 [報告]
發(fā)表于 2016-08-18 22:23 |只看該作者
回復(fù) 4# sunzhiguolu


  看不太懂啊。。。我寫了一個代碼好像有問題,可以幫忙看下嗎?
#!/usr/bin/perl -w
use strict;

open (IN, "<", "A.txt" or die $!;
open (OUT,">", "B.txt') or die $!;

my @B;

while (<IN>{
    chomp;
    my (undef, $a, $b, undef, $c) = split("\t", $_);
    @tmp = split (";", $c);
    my $c1 = $tmp[0];
    my $c2 = $tmp[1];                 
    $c1 =~ m/w+,s+,^"[+]"/;                              
    $c2 =~ m/w+,s+,^"[+]"/;
    push (@B, $c1, $a, $c2, $b)
    print OUT "AA\tBB\tCC\tDD\t';
    print OUT join("\t", @B);
}

close IN;
close OUT;

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
6 [報告]
發(fā)表于 2016-08-19 10:22 |只看該作者
本帖最后由 sunzhiguolu 于 2016-08-19 10:24 編輯

回復(fù) 5# tingshuibanxia
個別地方, 根據(jù)你自己的實際情況適當修改.
  1. #!/usr/bin/perl -w
  2. use strict;

  3. while (<>){
  4.     chomp;
  5.     my (undef, $a, $b, undef, $c) = split (/\t/, $_);
  6.     my @aT = split (";", $c);
  7.     my $c1 = $aT[0];
  8.     my $c2 = $aT[1];
  9.     ($c1) = $c1 =~ m/"([^"]+)"/;
  10.     ($c2) = $c2 =~ m/"([^"]+)"/;
  11.     print "AA\tBB\tCC\tDD\n";
  12.     print join ("\t", $c1, $a, $c2, $b), "\n";
  13. }
復(fù)制代碼
perl abc.pl a
----------------------------------
AA      BB      CC      DD
C1,T_,2/        000     D,34    3DS


   

評分

參與人數(shù) 1信譽積分 +20 收起 理由
tingshuibanxia + 20 贊一個!

查看全部評分

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
7 [報告]
發(fā)表于 2016-08-19 21:24 |只看該作者
回復(fù) 6# sunzhiguolu


    thank u sooooooooooo much~

論壇徽章:
0
8 [報告]
發(fā)表于 2016-08-19 22:25 |只看該作者
  1. #!/usr/bin/perl

  2. use warnings;
  3. use strict;

  4. print "AA \t BB \t CC \t DD\n";
  5. while (<>) {
  6.         chomp;
  7.         my @list = split /\t+/, $_;
  8.         my @result = split /"/, $list[4];
  9.         print $result[1], "\t", $list[1], "\t", $result[3], "\t", $list[2], "\n";
  10. }
復(fù)制代碼
僅供參考~

論壇徽章:
0
9 [報告]
發(fā)表于 2016-08-19 22:35 |只看該作者
回復(fù) 5# tingshuibanxia
復(fù)雜的問題簡單化就好,不必在意是否“;”分隔,能正確輸出就行,僅發(fā)表個人建議~


   

評分

參與人數(shù) 1信譽積分 +5 收起 理由
tingshuibanxia + 5 神馬都是浮云

查看全部評分

論壇徽章:
0
10 [報告]
發(fā)表于 2016-08-19 23:28 |只看該作者
回復(fù) 5# tingshuibanxia
字符集前面要加上“\”哦,\w與\s


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP