我有一个元素列表包含特殊字符。 我想将该列表转换为仅包含字母数字字符。 没有特殊字符。 my_list = ["on@3", "two#", "thre%e"]
我的期望输出是,
我有一個元素列表,其中包含特殊字符。我希望將該列表轉換為僅包含字母數字字符,沒有特殊字符。 my_list = ["on@3", "two#", "thre%e"]
我期望的輸出是:
out_list = ["one","two","three"]
我无法简单地对这些项目应用 strip()
,请帮忙。
我有一个元素列表包含特殊字符。 我想将该列表转换为仅包含字母数字字符。 没有特殊字符。 my_list = ["on@3", "two#", "thre%e"]
我的期望输出是,
我有一個元素列表,其中包含特殊字符。我希望將該列表轉換為僅包含字母數字字符,沒有特殊字符。 my_list = ["on@3", "two#", "thre%e"]
我期望的輸出是:
out_list = ["one","two","three"]
我无法简单地对这些项目应用 strip()
,请帮忙。
这里有另一种解决方案:
import re
my_list= ["on@3", "two#", "thre%e"]
print [re.sub('[^a-zA-Z0-9]+', '', _) for _ in my_list]
输出:
['on3', 'two', 'three']
使用str.translate()
方法将同一翻译表应用于所有字符串:
removetable = str.maketrans('', '', '@#%')
out_list = [s.translate(removetable) for s in my_list]
str.maketrans()
静态方法 是生成翻译映射表的有用工具;前两个参数是空字符串,因为您不是替换字符,而只是删除。第三个字符串包含您要删除的所有字符。
演示:
>>> my_list = ["on@3", "two#", "thre%e"]
>>> removetable = str.maketrans('', '', '@#%')
>>> [s.translate(removetable) for s in my_list]
['on3', 'two', 'three']
3
替换为e
。 - roganjosh试试这个:
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']
使用两个for循环
l = ['@','#','%']
out_list = []
for x in my_list:
for y in l:
if y in x:
x = x.replace(y,'')
out_list.append(x)
break
out_list = [ x.replace(y,'') for x in my_list for y in l if y in x ]
str.translate()
,这样你就只需要一个循环而不是两个了。 - Martijn Pieters
map
或列表推导式将该函数应用于字符串列表。 - Adam Smithon@3
中的3
去哪了?你也会用字母替换数字吗? - Martijn Pieters