0

いくつかの if パラメータを使用して CSV (パイプ区切り) ファイルを再フォーマットする方法を探していました。これは PHP (strpos および if ステートメント) または XSLT を使用して実行できると確信していますが、これが最適かどうかを知りたいと思っていました。 /新しい言語を学ぶ前に行う最も簡単な方法. これは、私が達成しようとしている種類の小さな例です (実際のファイルは約 25000 行です。これにより答えが変わりますか?)

99407350|Math Book #13 (ランダム情報)|AB Collings|http:www.abc.com/ABC 497790366|English Book|Harold Herbert|http:www.abc.com/HH

これに変換します。

99407350|数学の本|#13|AB Collings|http:www.abc.com/ABC 497790366|英語の本||ハロルド・ハーバート|http:www.abc.com/HH

私がどの方向を見る必要があるかについてのアドバイスは素晴らしいでしょう.

4

1 に答える 1

0

PHP では getcsv() (PHP 5) と fgetcsv() (PHP 4 および 5) が提供されているので、PHP 環境で作業している場合はそれを使用してください。たとえば、http ://www.php.net/manual/en/function.fgetcsv.php を参照してください。

自分で何かをする場合は、"...|..." および/または \| に対処することを忘れないでください。持つ | フィールド内。または、それが起こらないことを確認するためにテストします。たとえば、データベースを CSV にエクスポートするコードをチェックして、それが起こっているかどうかを確認します。

また、注意してください - Unix / Solaris / Linux / OS X システムでは、awk -F '|' '(NF != 9)' yourfile.csv | wc は、9 フィールド以外の行数をカウントします。あなたが確信しているなら | awk は、フィールド区切り文字として以外はまったく発生しません。たとえば、 awk -F '|' を使用すると、 awk はこれにも完全に適した言語です。'{ gsub(/ [(].*[)]/, "", $1); print}' yourfile.csv

ここで、[(] は (異なるバージョンの awk で機能する方法で ([)] についても同じように) に一致します。

于 2012-08-30T04:11:05.610 に答える