Python で文字列から \xa0 を削除するにはどうすればいいですか? 質問する

Python で文字列から \xa0 を削除するにはどうすればいいですか? 質問する

現在、Beautiful Soup を使用して HTML ファイルを解析し、 を呼び出していますget_text()が、スペースを表す \xa0 Unicode が大量に残っているようです。Python 2.7 でこれらをすべて削除してスペースに変更する効率的な方法はありますか? より一般的な質問は、Unicode フォーマットを削除する方法があるかどうかだと思います。

別のスレッドで提案されているように、を使用しようとしましたline = line.replace(u'\xa0',' ')が、 \xa0 が u に変更されたため、代わりにすべての場所に "u" が使用されるようになりました。 ):

編集: 問題は によって解決されているようですstr.replace(u'\xa0', ' ').encode('utf-8')が、.encode('utf-8')なしで実行するとreplace()、たとえば \xc2 のようなさらに奇妙な文字が吐き出されるようです。誰かこれを説明できますか?

ベストアンサー1

\xa0 は実際には Latin1 (ISO 8859-1) の非改行スペースであり、chr(160) でもあります。これをスペースに置き換える必要があります。

string = string.replace(u'\xa0', u' ')

.encode('utf-8') の場合、Unicode は UTF-8 にエンコードされます。つまり、すべての Unicode は 1 ~ 4 バイトで表すことができます。この場合、\xa0 は 2 バイトの \xc2\xa0 で表されます。

よく読んでユニコード

unicodedata.normalize注意:この回答は2012年のものですが、Pythonは進化しており、現在でも使用できるはずです。

おすすめ記事