从python中的项目列表中删除特殊字符

pyd*_*pyd 4 python string list special-characters

my_list = ["on@3", "two#", "thre%e"]
Run Code Online (Sandbox Code Playgroud)

我的预期输出是

out_list = ["one","two","three"]
Run Code Online (Sandbox Code Playgroud)

我不能简单地申请strip()这些项目,请帮忙。

Mar*_*ers 7

使用该str.translate()方法 将相同的转换表应用于所有字符串:

removetable = str.maketrans('', '', '@#%')
out_list = [s.translate(removetable) for s in my_list]
Run Code Online (Sandbox Code Playgroud)

str.maketrans()静态方法是产生翻译映射表的有用工具; 前两个参数是空字符串,因为您没有替换字符,只是删除。第三个字符串包含要删除的所有字符。

演示:

>>> my_list = ["on@3", "two#", "thre%e"]
>>> removetable = str.maketrans('', '', '@#%')
>>> [s.translate(removetable) for s in my_list]
['on3', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)


Mah*_*ria 6

这是另一种解决方案:

import re
my_list= ["on@3", "two#", "thre%e"]
print [re.sub('[^a-zA-Z0-9]+', '', _) for _ in my_list]
Run Code Online (Sandbox Code Playgroud)

输出:

['on3', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)


SP *_* SP 5

尝试这个:

l_in = ["on@3", "two#", "thre%e"]
l_out = [''.join(e for e in string if e.isalnum()) for string in l_in]
print l_out
>['on3', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)