免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3632 | 回复: 7
打印 上一主题 下一主题

急!!!處理檔案數值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-08 16:02 |只看该作者 |倒序浏览
我有一份資料類似如下
===========================
3,4.8          ,400.452802218193
(3.1,4.7     ,400.xxx)
3.2,4.6          ,400.615193459049
(3.3,4.5     ,400.xxx)
3.4,4.4          ,401.285205527175
(3.5,4.3     ,400.xxx)
3.6,4.2          ,402.253284109361
(3.6,4.3     ,400.xxx)
3.6,4.4          ,395.175614273155
(3.7,4.2     ,400.xxx)
3.8,4          ,403.497966749557

=============================
數字,數字,數字
我想利用內插的方式多出一倍的資料!!括弧內是想要產生的東西,append在原檔案內就可以了
原理就是內插,產生的內容就是  ==== (上數值+下數值)/2

謝謝各位大大 我卡在這!!!

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
2 [报告]
发表于 2014-04-08 16:18 |只看该作者
  1. #!perl

  2. use 5.016;

  3. while (my $line = <DATA>) {
  4.     chomp $line;
  5.     if ($line =~ /^([\d\.]+),([\d\.]+)/) {
  6.         say $line;
  7.         my $first = $1 + 0.1;
  8.         my $second = $2 - 0.1;
  9.         say "($first,$second      ,400.xxx)";
  10.     }
  11. }


  12. __DATA__
  13. 3,4.8         ,400.452802218193
  14. 3.2,4.6       ,400.615193459049
  15. 3.4,4.4       ,401.285205527175
  16. 3.6,4.2       ,402.253284109361
  17. 3.6,4.4       ,395.175614273155
  18. 3.8,4         ,403.497966749557
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-04-08 16:56 |只看该作者
回复 2# 104359176

大大是不是有點誤解我意思 不是每個都剛好+0.1 -0.1

是上下取中間值的

謝謝大大


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
4 [报告]
发表于 2014-04-08 17:22 |只看该作者
大大{:2_172:}
  1. #!/usr/bin/perl

  2. my @value = map [ split /\s*,\s*|\n/ ], <DATA>;
  3. while ( my $A = shift @value ) {
  4.     print "$A->[0],$A->[1]\t,$A->[2]\n";
  5.     next unless @value;
  6.     my @C = map { ( $A->[$_] + $value[0][$_] ) / 2 } 0 .. 2;
  7.     print "$C[0],$C[1]\t,$C[2]\n";
  8. }

  9. __DATA__
  10. 3,4.8          ,400.452802218193
  11. 3.2,4.6          ,400.615193459049
  12. 3.4,4.4          ,401.285205527175
  13. 3.6,4.2          ,402.253284109361
  14. 3.6,4.4          ,395.175614273155
  15. 3.8,4          ,403.497966749557
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-04-08 19:26 |只看该作者
回复 4# pitonas

可以了 太感謝大大了!!!!!!!!!!!


   

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
6 [报告]
发表于 2014-04-10 22:05 |只看该作者
  1. $A->[0],$A->[1]\t,$A->[2]
复制代码
大牛,这个不用声明引用吗?
回复 4# pitonas


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
7 [报告]
发表于 2014-04-14 12:50 |只看该作者
{:2_172:}
  1. while ( my $A = shift @value ) {
复制代码
回复 6# kernel69


   

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
8 [报告]
发表于 2014-04-16 09:15 |只看该作者
我认为这个是在声明引用,
  1. my @value = map [ split /\s*,\s*|\n/ ], <DATA>;
复制代码
,原因是在[],是用来创建匿名数组的
回复 7# pitonas


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP