2017-07-17 8 views
0

こんにちは、奇妙な文字を削除するためのPythonの正規表現

私はいくつかの奇妙な文字( のような)の文字列のリストを持っています。例えば :

'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82' 

または:

私は、これらの文字列から\ x9f \ X91 \ x8aと\ x9f \ x98 \ X82 \ x9f \ x98 \ X82削除する
'Le papa du mois �\x9f\x91\x8a' 

私はこの正規表現を試しました:((.?)\\x[0-9]([a-z]|[0-9])(.?)+)+しかし、それは動作しません。私は正規表現の初心者なので、助けを求める。

ありがとう

+0

あなたの質問は、正規表現についてのみです。 –

+2

@ThomasDussaut私は同意しない。私は正しい答えは、OPの最初の場所で奇妙な文字を引き起こしたエンコードの問題を修正するためになるだろうと思う。 –

+0

は、正規表現に関する研究を行い、あなたは答えを見つけるでしょう。 –

答えて

0

私の経験では、維持するための「安全」の文字のリストを作成するために、少し安全です。あなたが今日やっていることは、その文章を「修正」し、おかしなものを取り除くことです。しかし、いくつかのゴーホボールのものが現れるとどうなりますか? 、私はその文字クラスにはないものを削除する方法

text = re.sub("[^\x20-\x7E]", "", text) 

:私は、私は唯一のビジネスの所有者が決定したとして「標準ASCII」を保つので、私は、この正規表現を使用する処理データの要件を持っていますほとんど標準キーボードにはないものがあります。あなたはこのルートに行く運が良いかもしれません。これは、ゴミの文字が道路を降りてくるしようとしている、そして、あなたが取り除くためにものを追加し続けるために、あなたの正規表現を編集することに何を予測するのは難しいです。あなたが保つべきもののリストを作ってください:)

+1

ありがとうございます。私は必要な文字 're.sub( '[^^(éèêùçà)\ x20- \ x7E]'、 ''、text)を残すように修正しました。 – Nazan

2

これらの文字を削除する代わりに処理する方が良いでしょうが、Pythonで削除したい場合は、正規表現を使用せずに削除できます。

text.decode("ascii", "ignore") 

この行はPythonでバイト配列をデコードし、ASCII文字のみを保持します。

+0

文字列をバイトに変換する必要があります。 'text = bytes(text、" utf-8 ")' – hadi

1

éのような文字列内の特定の文字をconseilléに保持する。

削除する部分文字列があります。 これを行うには、部分文字列の先頭と末尾を見つける必要があります。

これは、例えば弦方法

とのより良い行われます。任意の文字列で、削除するために文字を開始 場合

は次のとおりです。

と文字列の最後には、文字列のlenをされています

re.sub(r'�.*','', 'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82')

私は、これはあなたを助けることを願っ

関連する問題