2017-12-20 6 views
-1

私はWebサイトからダウンロードし、BeautifulSoupを使って解析したテキストから¥x92、¥xa0などの記号を削除しようとしています。そして、私はどこにでもこれらのシンボル(エンコーディング)があることを知ります。私はtxtからこれらの記号を削除するためにre.sub(r'[^\x00-x7F]',' ',txt) を使用していますが、私はyの各出現を失っていることに気付きました。たとえば、「セキュリティ」が「Securit」などになりました。Python 3の正規表現のサブ関数に問題がある

ご協力いただければ幸いです。

ありがとうございました。

+2

あなたは 'x7F'の前に' '\' 'を見逃しました。 'r '[^ \ x00- \ x7F]''です。 '0-x'は' 0'から 'x'までの範囲を作るので、' y'と 'z'は一致して削除されます。 –

+0

申し訳ありません、範囲は '\ x00'から' x'です。 're.DEBUG'を使用します。[このデモ](https://ideone.com/stTDi3)を参照してください。これはあなたのパターンが 'range(0、120)'、 'literal 55'、' literal 70'以外のすべてにマッチすることを示しています。 –

+0

ありがとうございました。それは問題(そして大きな頭痛)を解決しました。ありがとう。 – user62198

答えて

-1

(誤った)正規表現r'[^\x00-x7F]'はおそらくr'[^\x00-\x7F]'(バックスラッシュが追加されています)です。

あなたが書いたように、ではなくがNUL〜xに含まれています。したがってy以降のASCIIコードが欠落しています。