私はPythonとRegExの両方の初心者です。シンボルを受け取り、それらをスペースに置き換える文字列を作成する方法を知りたいです。どんな助けも素晴らしいです。
例えば:
how much for the maple syrup? $20.99? That's ricidulous!!!
に:
how much for the maple syrup 20 99 That s ridiculous
正規表現 を使用する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の英数字またはアンダースコアに一致します
正規表現を理解するには、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)
私はしばしばコンソールを開き、オブジェクトのメソッドで解決策を探します。かなり頻繁にそれはすでにそこにあります:
_>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello s'
_
短い答え:string.replace()
を使用します。