1

英数字とアクセント記号を除くすべての特殊文字を削除するにはどうすればよいですか?

私は次のようなものを試しました:

text = 'abcdeáéí.@# '
re.sub(r'[^a-zA-Z0-9áéíóúÁÉÍÓÚâêîôÂÊÎÔãõÃÕçÇ: ]', ' ', text)

しかし、私は成功しませんでした。次の式は、英数字のみを許可するのに有効ですが、アクセントは許可しません。

tmp = re.sub(r'[^a-zA-Z0-9: ]', '', x)

誰かが私を助けることができますか?

4

1 に答える 1

0

テキストを Unicode 文字列text = u'abcdeáéí.@# 'にして、パターンが Unicode 文字も受け入れられることを確認してくださいre.sub(u'[^a-zA-Z0-9áéíóúÁÉÍÓÚâêîôÂÊÎÔãõÃÕçÇ: ]', ' ', text)

この組み合わせでu'abcde\xe1\xe9\xed '、結果として得られます(\xe1などはアクセント文字のエスケープコードですtext

r文字をエスケープしない場合は、パターンの前に必要はありません。r'\d\w'そこにあるので、代わりに次のように書くことができます'\\d\\w'

于 2012-10-06T02:19:10.570 に答える