如何从Python的string中删除符号?

我是一个Python和RegEx的初学者,我想知道如何创build一个带符号的string,并用空格replace它们。 任何帮助是伟大的。

例如:

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

成:

 how much for the maple syrup 20 99 That s ridiculous 

一种方法,使用正则expression式 :

 >>> 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]将匹配任何字母数字或下划线的内容

有时需要更长的时间才能找出正则expression式,而不是把它写在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) 

我经常打开控制台,在对象方法中寻找解决scheme。 很多时候它已经在那里了:

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

简短的回答:使用string.replace()