如何使用python从文本中删除特定符号?

时间:2013-03-08 06:22:50

标签: python list

我有一个这样的字符串:

  

string ='这是我2013-02-11的文字,&它包含这样的字符! (例外)'

这些是我想从字符串中删除的符号。

!, @, #, %, ^, &, *, (, ), _, +, =, `, /

我试过的是:

listofsymbols = ['!', '@', '#', '%', '^', '&', '*', '(', ')', '_', '+', '=', '`', '/']
exceptionals = set(chr(e) for e in listofsymbols)
string.translate(None,exceptionals)

错误是:

  

需要一个整数

请帮我这样做!

3 个答案:

答案 0 :(得分:7)

试试这个

>>> my_str = 'This is my text of 2013-02-11, & it contained characters like this! (Exceptional)'
>>> my_str.translate(None, '!@#%^&*()_+=`/')
This is my text of 2013-02-11,  it contained characters like this Exceptional

另外,请不要命名已经是内置名称或标准库的一部分的变量。

答案 1 :(得分:3)

这个怎么样?我还将string重命名为s,以避免它与内置模块string混淆。

>>> s = 'This is my text of 2013-02-11, & it contained characters like this! (Exceptional)'
>>> listofsymbols = ['!', '@', '#', '%', '^', '&', '*', '(', ')', '_', '+', '=', '`', '/']
>>> print ''.join([i for i in s if i not in listofsymbols])
This is my text of 2013-02-11,  it contained characters like this Exceptional

答案 2 :(得分:0)

另一个建议,可以轻松扩展到更复杂的过滤条件或其他输入数据类型:

from itertools import ifilter

def isValid(c): return c not in "!@#%^&*()_+=`/"

print "".join(ifilter(isValid, my_string))