我正在解析一個大的.CSV文件,並且由於Excel和Microsoft的無限幫助而遇到問題 - 在Excel中打開.CSV文件以清除很多問題在它到達我之前,但現在我有一個領域已經添加了前導零。 Excel不起作用(至少我找到了),因爲這個特定的字段是ProductNumber,可以有字母和數字的任意組合。問題出現了,因爲某些產品編號以點開頭,即 - .12345678。有時點稍後 - 12.345678,有時不點 - 123456789,有時字母和/或字母和數字混合 - ABCDEFGHI或A12D34G56。Perl - 使用文本和數字修整字段中的前導零
在每種情況下,該字段需要爲9個字符或更少。但Excel通過以「有用的」前導零爲開頭的任何ProductNumber(小數點) - 所以我有0.12345678,將其變成10個字符的ProductNumber。我需要修剪前導零 - 只在字段以「0」開頭的情況下。有很多產品編號以「10.」,「20」開頭。等等。不想碰那些。
那麼,有沒有辦法讓我用標量變量來做這件事?
所以,說我的文件有
0.12345678
10.123456
A12B34C56
ABCDEFGHI
,我有這樣的事情,開始 -
my $filename = 'test.csv';
open my $FH, $filename
or die "Could not read from $filename <$!>, program halting.";
# Read the header line.
chomp(my $line = <$FH>);
my @fields = split(/,/, $line);
print Dumper(@fields), $/;
my @data;
# Read the lines one by one.
while($line = <$FH>) {
# split the fields on the comma.
chomp($line);
my @fields = split(/,/, $line);
# Remove leading zero on ProductNumber Field
$_ = for $fields[17];
修剪前導零,你可以做'S/^ 0 + //'我不知道你問的 –
我想僅當字段以「0」開始時才調整零點。 - 如果它以其他方式開始 - 即使是「00」,我也不想修剪它。只有當它以0開頭,然後是小數時才需要修剪它。 – BigRedEO
好吧,然後嘗試's/0 \ ././' –