Python 3で正規表現を使用してこのスニペットを検討してください:
>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^A-Za-z0-9 ]","",t,flags=re.UNICODE)
'Meu co paraplgico'
非ASCII文字を削除するのはなぜですか?私は旗なしで試しました、そしてそれはすべて同じです。
ボーナスとして、誰でもこれをPython 2.7でも動作させることができますか?
Python 3で正規表現を使用してこのスニペットを検討してください:
>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^A-Za-z0-9 ]","",t,flags=re.UNICODE)
'Meu co paraplgico'
非ASCII文字を削除するのはなぜですか?私は旗なしで試しました、そしてそれはすべて同じです。
ボーナスとして、誰でもこれをPython 2.7でも動作させることができますか?
英数字以外の文字([^A-Za-z0-9 ]
)をblank(""
)に置き換えています。非ASCII文字は、AZ、az、または0〜9の中にないため、置換されます。
次のようにすべての単語文字を一致させることができます。
>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^\w ]","",t, flags=re.UNICODE)
>>> 'Meu cão é paraplégico'
または、次のように正規表現に文字を追加することもできます[^A-Za-z0-9ãé ]
。
[In 1]: import regex
[In 2]: t = u"Meu cão é #paraplégico$."
[In 3]: regex.sub(r"[^\p{Alpha} ]","",t,flags=regex.UNICODE)
[In 4]: print(regex.sub(r"[^\p{Alpha} ]","",t,flags=regex.UNICODE))
Meucãoéparaplégico
(PyPIから)正規表現ライブラリに切り替えることでこれを解決しました。
その後、正規表現コマンドは次のようになりました。
regex.sub(ur"[^\p{L}\p{N} ]+", u"", t)