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

  免費注冊 查看新帖 |

Chinaunix

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

從TXT提取特定列數(shù)據(jù)存到Excel中 [復制鏈接]

論壇徽章:
30
15-16賽季CBA聯(lián)賽之八一
日期:2020-10-27 13:24:2315-16賽季CBA聯(lián)賽之山東
日期:2020-10-27 13:24:07
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2018-01-15 16:56 |只看該作者 |倒序瀏覽
5可用積分
本帖最后由 情節(jié)可以很簡單 于 2018-01-16 17:24 編輯

哪位大神能提供下 下面兩種模塊的安裝包啊,或給個指引,沒用過這個模塊。
我用Windows系統(tǒng)處理數(shù)據(jù),可是開頭就給我難住了,這些指令無法執(zhí)行。
我搜了好多網(wǎng)址啥的都不行!
use Win32::OLE
use Spreadsheet::WriteExcel
另外我在activeperl安裝路徑中發(fā)現(xiàn)了OLE.pm及一些文件夾,那怎么不能用呢。

論壇徽章:
33
榮譽會員
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT運維版塊每日發(fā)帖之星
日期:2016-04-17 06:23:27操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-24 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-05-06 12:46:59
2 [報告]
發(fā)表于 2018-01-15 18:45 |只看該作者
activeperl 有自己的模塊管理。好象說 activepm什么的。

論壇徽章:
30
15-16賽季CBA聯(lián)賽之八一
日期:2020-10-27 13:24:2315-16賽季CBA聯(lián)賽之山東
日期:2020-10-27 13:24:07
3 [報告]
發(fā)表于 2018-01-16 17:11 |只看該作者
本帖最后由 情節(jié)可以很簡單 于 2018-01-16 17:19 編輯

處理學習實踐階段,求指導!謝謝。!
我把要處理的文本放這吧,不用輸入到Excel了。

輸入文本A為:下面是輸入文本的一部分(省略號下面還有一些無用的英文說明),
其他部分的格式也是這樣,但行數(shù)量有異。
=========================================================
    Device#: 19-24

die position: (-7,1)     site 2
die position: (-6,1)     site 3
die position: (-5,1)     site 4
die position: (-4,1)     site 5
die position: (-3,1)     site 6
die position: (-2,1)     site 7

Number  Site   Result   Test Name   Channel       Low              Measured              High           
0            4      PASS     Con               56      -1.0000 V      -395.4362 mV   -100.0000 mV      
0            5      PASS     ib_trim1         58      -1.0000 V      -555.5970 mV   -100.0000 mV            
1            4      FAIL      Con               40      -1.0000 V      -405.8470 mV   -100.0000 mV      
1            2      PASS     ib_trim0         42      -1.0000 V      -556.9597 mV   -100.0000 mV               
2            4      FAIL      ib_trim0         57      -1.0000 V      -398.5833 mV   -100.0000 mV         
2            5      PASS     Con               59      -1.0000 V      -553.6025 mV   -100.0000 mV         
.................................................................

輸出文本B為:“PASS”的 ib_trim 對應(yīng)的site坐標及 Measured 值。

Device#: 19-24
(-4,1)        ib_trim1     -555.5970 mV
(-7,1)        ib_trim0     -556.9597 mV
#-----------------------------------------以下我的程序只實現(xiàn)了相關(guān)列提取:但是坐標不會匹配。
Device#: 19-24
  5        ib_trim1     -555.5970 mV
  2        ib_trim0     -556.9597 mV

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
4 [報告]
發(fā)表于 2018-01-16 19:17 |只看該作者
回復 3# 情節(jié)可以很簡單

粗略地寫一個
  1. use Modern::Perl;
  2. STDOUT->autoflush(1);

  3. my $file = "src.txt";
  4. open my $fh, "<", $file or die "$!";
  5. my $line;
  6. my %site;

  7. while ( $line = <$fh> )
  8. {
  9.     if ( $line=~/^die position: (.*)\s+site (\d+)/i )
  10.     {
  11.         $site{ $2 } = $1;
  12.     }

  13.     if ( $line=~/\d+\s+(\d+)\s+PASS\s+(ib_trim\d+).*?(-?\d+\.\d+ mV)/i )
  14.     {
  15.         printf "%s\t%s\t%s\n", $site{$1}, $2, $3;
  16.     }
  17. }
  18. close $fh;
復制代碼

評分

參與人數(shù) 1信譽積分 +5 收起 理由
情節(jié)可以很簡單 + 5 謝謝大神!對第三列數(shù)采取了獨立提取,雖然.

查看全部評分

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
5 [報告]
發(fā)表于 2018-01-16 19:44 |只看該作者
或者先把數(shù)據(jù)存到哈希表中,可以按標題查詢

  1. use Modern::Perl;
  2. STDOUT->autoflush(1);

  3. my $file = "src.txt";
  4. open my $fh, "<", $file or die "$!";
  5. my $line;
  6. my %site;
  7. my @title;
  8. my @table;
  9. my $ti;

  10. while ( $line = <$fh> )
  11. {
  12.     if ( $line=~/^die position: (.*)\s+site (\d+)/i )
  13.     {
  14.         $site{ $2 } = $1;
  15.     }
  16.     elsif ( $line=~/^Number/ )
  17.     {
  18.         @title = split /\s{2,}/, $line;
  19.     }
  20.     elsif ( $line=~/^\d+\s+/ )
  21.     {
  22.         $ti = 0;
  23.         push @table, { map { $title[$ti++] => $_ } split /\s{2,}/, $line };
  24.     }
  25. }
  26. close $fh;

  27. for my $d ( @table )
  28. {
  29.     if ( $d->{'Result'} =~/PASS/i and $d->{'Test Name'}=~/ib_trim/i )
  30.     {
  31.         printf "%s\t%s\t%s\n", $site{$d->{'Site'}}, $d->{'Test Name'}, $d->{'Measured'};
  32.     }
  33. }
復制代碼

論壇徽章:
30
15-16賽季CBA聯(lián)賽之八一
日期:2020-10-27 13:24:2315-16賽季CBA聯(lián)賽之山東
日期:2020-10-27 13:24:07
6 [報告]
發(fā)表于 2018-01-17 15:41 |只看該作者
本帖最后由 情節(jié)可以很簡單 于 2018-01-17 16:45 編輯

回復 5# 523066680

謝謝回復!我有點不知道該怎么描述:
1.首先我用的是Windows系統(tǒng),modern::perl 我從CPAN下載了包在perl路徑下解壓了。
但運行程序時依然提示錯誤(就把他#注釋掉了),所以我開頭變?yōu)椋?br /> #!C:\perl64\bin
use strict;  
use warnings;
use 5.016;
use autodie;

這樣您提供的兩個腳本輸出結(jié)果是正確的。ㄎ矣萌龢琴N出來的部分文本示例)...

2.當我用 我的源文件為輸入時,提示錯誤(這是我之前表述簡略造成的,抱歉):
第一個腳本這句“if ( $line=~/\d+\s+(\d+)\s+PASS\s+(ib_trim\d+).*?(-?\d+\.\d+ mV)/i )”中我的源數(shù)據(jù)后面單位“mV”不是固定的

第二個腳本“if ( $d->{'Result'} =~/PASS/i and $d->{'Test Name'}=~/ib_trim/i )”
錯誤提示“Use of unintialized value in pattern match <m/ /> at a.pl line 41”

這個原因我在想可能是因為我的源文件 標題下面對應(yīng)數(shù)據(jù) 不是對齊的,這個該怎么辦,我之前提取的時候是按列(電流單位也占一列):“print C (split)[1],"\t",(split)[3],"\t",(split)[8]," ",(split)[9],"\n";”

下面是源文件局部:是兩個部分數(shù)據(jù)的交界處(每一部分都是以“Device#:  x~y ” 開始,且每一部分的坐標“die position:”也是不同的)。
...       .     ....        .......                      .........         ............          ............            ............     
8       1    FAIL     ib_trim3                  test  -1      -1.2800 uA     -2.1310 uA     -960.0000 nA      
8       2    FAIL     ib_trim3                  test  -1      -1.2800 uA     -544.6071 pA   -960.0000 nA        
8       3    FAIL     ib_trim3                  test  -1      -1.2800 uA     762.9061 pA    -960.0000 nA        
8       4    FAIL     ib_trim3                  test  -1      -1.2800 uA     -23.0533 nA    -960.0000 nA      

Site Failed tests/Executed tests
------------------------------------
    0       5       9
    1       5       9
    2       5       9
    3       5       9
    4       5       9

Site    Sort     Bin
------------------------------------
    0      40       4
    1      40       4
    2      40       4
    3      40       4
    4      40       4
=========================================================================
    Device#: 6-10

die position: (7,1)     site 0
die position: (8,1)     site 1
die position: (9,1)     site 2
die position: (10,1)     site 3
die position: (11,1)     site 4

Number  Site Result   Test Name       Pin   Channel Low            Measured       High              
0       0    PASS     Con                       test  75      -1.0000 V      -546.8680 mV   -100.0000 mV         
0       1    PASS     Con                       test  74      -1.0000 V      -559.3652 mV   -100.0000 mV         
0       2    PASS     Con                       test  73      -1.0000 V      -556.2122 mV   -100.0000 mV         
0       3    PASS     Con                       test  72      -1.0000 V      -560.9373 mV   -100.0000 mV     
0       4    PASS     Con                       test  15      -1.0000 V      -545.2946 mV   -100.0000 mV         
1       0    FAIL      ib_trim1                  test  -1      -1.2800 uA     -1.1330 nA       -960.0000 nA      
1       1    FAIL      ib_trim1                  test  -1      -1.2800 uA     -2.5713 nA       -960.0000 nA   
1       2    FAIL      ib_trim1                  test  -1      -1.2800 uA     -915.8693 nA   -960.0000 nA        
1       3    PASS     ib_trim1                  test  -1      -1.2800 uA     -1.1828 uA      -960.0000 nA         
1       4    FAIL      ib_trim1                  test  -1      -1.2800 uA     3.0930 nA        -960.0000 nA         
2       0    PASS     ib_trim0                  test  -1      -1.2800 uA     -1.0120 uA      -960.0000 nA      
...       ..    ......       .........                    .........          ............        ..............       ................     




論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
7 [報告]
發(fā)表于 2018-01-18 10:03 |只看該作者
本帖最后由 523066680 于 2018-01-18 12:38 編輯

回復 6# 情節(jié)可以很簡單

哦,后面的多了一個Pin列。能不能發(fā)一個更完整的源文件(壓縮)上來,或者上傳網(wǎng)盤。

第二個代碼找出問題了
Number,Site Result,Test Name,Pin,Channel Low,Measured,High

Site Result 是兩個列的抬頭,Test Name 是單個列的抬頭,中間都是一個空格。

前三列的數(shù)據(jù)內(nèi)容是等寬的,1樓給出的示例是這樣的 (Site 和 Result 之間有多個空格,可以作為區(qū)分):
  1. Number  Site   Result  
  2. 0            4      PASS   
  3. 0            5      PASS  
  4. 1            4      FAIL   
復制代碼
后面補充的示例是這樣的(Site 和 Result 之間只有1個空格)?
  1. Number  Site Result  
  2. 0       0    PASS
  3. 0       1    PASS
  4. 0       2    PASS  
復制代碼
https://gist.coding.net/u/ViANG/b6a859d73042403494be6fd74836e6a3

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
8 [報告]
發(fā)表于 2018-01-18 11:13 |只看該作者
本帖最后由 523066680 于 2018-01-18 12:33 編輯

      use strict;
      use warnings;
      STDOUT->autoflush(1);

      my $file = "src_more.txt";
      open my $fh, "<", $file or die "$!";
      my $line;
      my %site;
      my @title;
      my @table;
      my $ti;

      while ( $line = <$fh> )
      {
          if ( $line=~/Device#.*/ )
          {
              dump_table(\@table) if @table;
              print $&, "\n";
              @title = ();
              @table = ();
              %site  = ();
          }

          elsif ( $line=~/^die position: (.*)\s+site (\d+)/i )
          {
              $site{ $2 } = $1;
          }
         
          elsif ( $line=~/^Number/ )  
          {
              @title = map { $_ !~/Test Name/i ? split " ", $_ : $_ } split /\s{2,}/, $line;
              # 只有 Test Name 是包含空格的 title
          }

          elsif ( $line=~/^\d+\s+/ )
          {
              $ti = 0;
              push @table, { map { $title[$ti++] => $_ } split /\s{2,}/, $line };
          }
      }
      close $fh;
      dump_table(\@table) if @table;

      sub dump_table
      {
          my $table = shift;
          for my $d ( @$table )
          {
              if (  $d->{'Result'}   =~/PASS/i
                      and
                    $d->{'Test Name'}=~/ib_trim/i )
              {
                  printf "%s\t%s\t%s\n",
                      $site{ $d->{'Site'} },
                      $d->{'Test Name'},
                      $d->{'Measured'}
                      ;
              }
          }
      }

      Device#: 19-24
      (-4,1)      ib_trim1    -555.5970 mV
      (-7,1)      ib_trim0    -556.9597 mV
      Device#: 6-10
      (10,1)      ib_trim1    -1.1828 uA
      (7,1)       ib_trim0    -1.0120 uA
[Finished in 0.4s]

論壇徽章:
0
9 [報告]
發(fā)表于 2018-01-28 10:47 |只看該作者
ActivePerl用PPM安裝模塊,在運行框輸入PPM回車即可。

給一段excel文件生成代碼,供你參考:
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. use Spreadsheet::WriteExcel;

  5. my $file = "Excel_Example.xls";
  6. my $workbook = Spreadsheet::WriteExcel->new($file);
  7. $workbook->set_properties(
  8.         title    => 'Excel_Example',
  9.         author   => 'Limeng',
  10.          company  => 'BlueIdea Software Lab.',
  11. );
  12. my $worksheet = $workbook->add_worksheet('Limeng');

  13. # Create a format for the column headings
  14. my $header = $workbook->add_format(
  15.         font => 'Arial',
  16.         bold => 1,
  17.         size => 12,
  18.         color => 'blue',
  19.         align => 'center',
  20.         valign => 'vcenter',
  21. );
  22. my $red = $workbook->add_format(
  23.         size => 11,
  24.         align => 'right',
  25.         valign => 'vcenter',
  26.         bg_color => 'red',
  27.          num_format => 0x04,
  28. );
  29. my $pink = $workbook->add_format(
  30.         size => 11,
  31.         align => 'right',
  32.         valign => 'vcenter',
  33.         bg_color => 33,
  34.          num_format => 0x04,
  35. );

  36. # Set the column width for columns 1, 2, 3 and 4
  37. $worksheet->set_column(0, 3, 10);

  38. # Write datas
  39. $worksheet->write('A1','Test1',$header);
  40. $worksheet->write('B1','Test2',$header);
  41. $worksheet->write('C1','Test3',$header);
  42. $worksheet->write('A2','2000',$red);
  43. $worksheet->write('B2','-50000',$pink);
  44. $worksheet->write('C2','=A2+B2',$red);
  45. $workbook->close();

  46. print "Excel file write OK!";
  47. <>;
復制代碼


論壇徽章:
0
10 [報告]
發(fā)表于 2018-01-28 10:48 |只看該作者
發(fā)重復了!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(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