正規表現をどのようにして配列に適用しますか?私のcsvファイルで読んでいる間、私は...Perl組み込みコンマで効率的にCSVを解析し、データベースに追加する
s/, /- /g;
s/1,000/1000/g;
これを適用しかし、私は私の多次元配列内のデータを入れた後、私は自分のフィールドに戻ってコンマを挿入する方法がわかりません。
正規表現をどのようにして配列に適用しますか?私のcsvファイルで読んでいる間、私は...Perl組み込みコンマで効率的にCSVを解析し、データベースに追加する
s/, /- /g;
s/1,000/1000/g;
これを適用しかし、私は私の多次元配列内のデータを入れた後、私は自分のフィールドに戻ってコンマを挿入する方法がわかりません。
まず、これを簡単に実現するために使用できるCSVモジュールがいくつかありますが、理由によってパッケージにアクセスできない、またはインストールできないことがあります。したがって、そうであれば、これは助けになるはずです。
カンマを埋め込んだCSVからフィールドを書き込もうとしている場合は、埋め込まれたコンマフィールドには見えないようにかっこや囲みを付ける必要がありますCSVのコンマ区切りフィールドとして使用します。 CSV内のすべてのデータを取得できます。
"Potatoes 1,000", (Tomatoes, 200), "(GemSquash, 1,029.95)"
^ ^
これらの埋め込まれコンマ:
"Potatoes 1,000", (Tomatoes, 200), "(GemSquash, 1,029.95)"
^ ^ ^^
これらは、CSVのカンマを表示
:このケースでは、括弧、引用符を使用し、両方が埋め込まれたカンマを使用しているデータを表示するには、CSVを持っています
したがって、以下は括弧と二重引用符を使用してデータを検索して置き換え、どちらがcsvコンマで、埋め込まれているかを判別します。
use strict;
use warnings;
my $string = '(Potatoes 1,000), "Tomatoes, 200", "(GemSquash, 1,029.95)"';
my $query = qr/(?: "\(([^()""]*) \)" | \(([^()]*) \) | " ([^"]*) " | ([^,]*)) , \s* /x;
my @results = grep defined, "$string," =~ /$query/g;
print "$_\n" for @results;
Potatoes 1,000
Tomatoes, 200
GemSquash, 1,029.95
CSVの解析には、Text::CSV
のようなCPANモジュールを使用します。返される値に正規表現を使用することができます。
結果は、私の出力は次のようになります... "総農場値 - ジャガイモ(ドル×1000)" – kathleen
は、私はあなたの質問に完全にないです。カンマを削除しても、それを元に戻したいですか? –
joinを使ってみましたか? 'perldoc join ' –