2

次の関数を使用して、Pythonで英数字以外の特殊文字を削除する方法を見つけました。

p_nonalphanum = re.compile('\W+')

def removeNonAlphaNum(string):
        m = p_nonalphanum.match(string)
        if m:
            string = string[m.end():]
        return string

1/2、3/4 など、数字と見なされるいくつかの特殊文字を保持したいと思います。正規表現を編集するにはどうすればよいですか?

例:「• ½ カップの小麦粉」から「½ カップの小麦粉」

4

3 に答える 3

3

否定された文字クラスを使用して、保持したいすべての文字を追加できます

次のようなことができます。

p_nonalphanum = re.compile('[^\w½¾]+')
print (p_nonalphanum.sub('', test))
于 2012-05-25T09:34:28.480 に答える
2

必要な各文字を手動で追加する正規表現を気にせずに、組み込みisalnum関数を使用してください。

>>> s = "• ½ cup flour -> ½ cup flour"
>>> def only_alphanum(s):
...     s = unicode(s, "utf-8")
...     return ' '.join(c for c in s.split() if c.isalnum())
... 
>>> print only_alphanum(s)
½ cup flour ½ cup flour

これにより、正規表現でアセンブルした分数のリストだけでなく、任意の分数をキャッチできます(非常に速く長くなる可能性があります)

>>> s = "• ¼ cup oats -*(*&!!"
>>> print only_alphanum(s)
¼ cup oats
于 2012-05-25T09:45:54.543 に答える
2
>>> def remove_unwanted(s):
...     '''• ½ cup flour -> ½ cup flour'''
...     allowed = '[\w½¾]+'
...     return ' '.join(re.findall(allowed, s))
... 
>>> print remove_unwanted('• ½ cup flour ->')
½ cup flour
于 2012-05-25T09:57:59.677 に答える