我有一个这样的字符串:
string ='这是我2013-02-11的文字,&它包含这样的字符! (例外)'
这些是我想从字符串中删除的符号。
!, @, #, %, ^, &, *, (, ), _, +, =, `, /
我试过的是:
listofsymbols = ['!', '@', '#', '%', '^', '&', '*', '(', ')', '_', '+', '=', '`', '/']
exceptionals = set(chr(e) for e in listofsymbols)
string.translate(None,exceptionals)
错误是:
需要一个整数
请帮我这样做!
答案 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))