0

CSV ファイルを Weka にインポートしようとしていますが、文字列を衛生的に処理する Weka の明らかに非常に貧弱な機能に問題がありました。

すでに sed を使用してすべての非 ASCII 文字を削除していますが、バックスラッシュを処理する際に問題が発生しました。私が持っている入力には、一部のフィールドにエスケープされたバックスラッシュが含まれており、他のフィールドにはエスケープされていないバックスラッシュ (Weka が正しく処理できない) が含まれています。

必要なのは、バックスラッシュが前後にないバックスラッシュを見つけて、2 つ目のバックスラッシュを追加する正規表現です。私は構文を機能させるのに本当に苦労しており、誰かが私を助けてくれるかどうか疑問に思っていました.

4

1 に答える 1

2

フォローしてみてください -sed 's/\\\\/@@_@/g; s/\\/\\\\/g; s/@@_@/\\\\/g'

最初にエスケープされたバックスラッシュをトークンに置き換え、単一のバックスラッシュをエスケープし、トークンをエスケープされたバックスラッシュに戻します。

ファイルに存在しないトークンを選択します。

echo 'asdfj\lasdf\\asldf\oweur\\lasjd;lf\\lasjfl\asdfsdf' | \
  sed 's/\\\\/@@_@/g; s/\\/\\\\/g; s/@@_@/\\\\/g'

結果:
asdfj\\lasdf\\asldf\\oweur\\lasjd;lf\\lasjfl\\asdfsdf

別のオプション -sed 's/\([^\\]\)\(\\\)\([^\\]\)/\1\\\\\3/g'

于 2013-04-28T01:20:09.680 に答える