2

正規表現\wは私の Unicode 文字列を無視しているようです。次の関数を作成しました:
extras.py

# -*- coding: utf-8 -*-
def test(word):
    print re.sub(r'[^\w]+', '', word, re.U)

そしてdjangoシェルから:

import extras
extras.test(u'שלום')

この例では、出力は空の文字列ですが、入力と同じである必要があります。
正規表現の目的は英数字のみを保持することですが、機能しません。ただし、ASCIIで動作します。

何が問題になる可能性がありますか?

4

1 に答える 1

3

パターンには未加工の Unicode 文字列を使用し、必ず次のflagsパラメーターを使用してください。

# -*- coding: utf-8 -*-
def test(word):
    print re.sub(ur'[^\w]+', u'', word, flags=re.U)

それから:

In [9]: test(u'Ã')
Ã
于 2012-07-31T20:43:17.487 に答える