【发布时间】:2015-10-02 16:00:59
【问题描述】:
我有一个包含 500 个左右的杂乱数据集 (.csv) 文件的列表,如下所示:
0.00, 0.53, 1.53, 0.00 0.52, 243.21
... etc etc.
我想要:
0.00, 0.53, 1.53, 0.00, 0.52, 243.21
在 perl(或 bash)中,我如何匹配小数点后的所有内容,如果有 空格 后跟另一个 数字,那么我会插入一个逗号在第一个数字之后?
即0.00 0.52 转为0.00, 0.52
我是 perl 和一般编程的初学者,所以我不太了解如何正确使用它。
我发现正则表达式[0-9]+(\.[0-9][0-9]?)?应该适用于两位小数,但是更多的小数呢?难道只是[0-9]+(\.[0-9]+?)?
我的失败尝试:
for my $file (glob '*.csv') {
open my $in, '<', $file;
my @lines;
while (<$in>) {
while(/^[0-9]+(\.[0-9]+)?$/g){
print ","; # Am I overwritting my lines here?
}
$line =~ s/,,/,/g; # Get rid of any double commas that appear now
}
close $in;
open my $out, '>', $file;
print $out $_ for @lines;
close $out;
}
我认为我没有正确匹配/打印 - 感谢任何帮助,包括更优雅的解决方案。
提前谢谢你!
【问题讨论】: