0

我有一个这样的字符串:

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

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

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

我尝试过的是:

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

错误是:

需要一个整数

请帮我这样做!

4

3 回答 3

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

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

于 2013-03-08T06:28:09.687 回答
3

这个怎么样?我还重命名strings以避免它与内置模块混淆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
于 2013-03-08T06:27:28.300 回答
0

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

from itertools import ifilter

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

print "".join(ifilter(isValid, my_string))
于 2013-03-08T08:45:08.903 回答