2016-06-24 2 views
4

私はPerlで解析する必要がある非常に大きなファイルを持っています。ファイル形式(私は変更できません)は、ファイルをExcelでCSV形式で開くことができるように書かれています。特にこの問題には、各行の区切り記号をパイプ(|)で置き換える必要があります。通常これは難しい仕事ではありませんが、私はいくつかの問題があります。私は解決策がありますが、私の仕事をより効率的に行う方法があるのだろうかと思っています。Perlの引用符と複数のカンマ区切り文字の置換

  1. データ自体は
  2. は、各「セル」は、データの価値を引用符でカプセル化されている(私が見つけ、カンマで置き換えることはできませんという意味)カンマでコメントが含まれていますが、セルが空白だった場合、その後何の引用符がありませんファイル内に存在

例ライン:

"Foo Bar","More Foo","More Bar",,,,,"Yet More","Comma,Separated,Statement" 

は私の現在のソリューションは、以下のコードのようになります。それは動作しますが、それは気が抜けているようで、すべての行を何度も処理する必要があります(このファイルが非常に大きいので避けたいものです)。

# Change the delimiter 
$line =~ s/",,,,,"/|||||/g; 
$line =~ s/",,,,"/||||/g; 
$line =~ s/",,,"/|||/g; 
$line =~ s/",,"/||/g; 
$line =~ s/","/|/g; 

$line =~ s/^"//;  # Remove leading quotation mark 
$line =~ s/"$//;  # Remove trailing quotation mark 

もっと速くて洗練されたソリューションを見つけ出すことができますか?

+2

私はこれを複製物として受け入れることができます。なんらかの理由で私は、そのスレッドで見つけた方法で問題を考えなかった。とても有難い! – GrinningX

答えて

関連する問題