web-dev-qa-db-ja.com

Pythonで文字列から記号を削除する方法は?

私はPythonとRegExの両方の初心者です。シンボルを受け取り、それらをスペースに置き換える文字列を作成する方法を知りたいです。どんな助けも素晴らしいです。

例えば:

how much for the maple syrup? $20.99? That's ricidulous!!!

に:

how much for the maple syrup 20 99 That s ridiculous
63
aaront

正規表現 を使用する1つの方法:

>>> s = "how much for the maple syrup? $20.99? That's ridiculous!!!"
>>> re.sub(r'[^\w]', ' ', s)
'how much for the maple syrup   20 99  That s ridiculous   '
  • \wは、英数字とアンダースコアに一致します

  • [^\w]は、notの英数字またはアンダースコアに一致します

117
dF.

正規表現を理解するには、Pythonで単に記述するよりも時間がかかる場合があります。

import string
s = "how much for the maple syrup? $20.99? That's ricidulous!!!"
for char in string.punctuation:
    s = s.replace(char, ' ')

他のキャラクターが必要な場合は、ホワイトリストを使用するか、ブラックリストを拡張するように変更できます。

ホワイトリストのサンプル:

whitelist = string.letters + string.digits + ' '
new_s = ''
for char in s:
    if char in whitelist:
        new_s += char
    else:
        new_s += ' '

Generator-expressionを使用したサンプルホワイトリスト:

whitelist = string.letters + string.digits + ' '
new_s = ''.join(c for c in s if c in whitelist)
25
monkut

私はしばしばコンソールを開き、オブジェクトのメソッドで解決策を探します。かなり頻繁にそれはすでにそこにあります:

_>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello   s'
_

短い答え:string.replace()を使用します。

7
buster