2017-04-02 114 views
0

我具有由转换成字符串的词典的列表,在该列表中的每个时隙被如下 “{<候选:Candidate1>:1.5}”删除元素

我想删除所有非字母数字和 ':' 元素,所以他们看起来像这样:

'候选人:Candidate1:​​1.5'

我试着做到以下几点:

for l in list: 
     for l2 in l: 
       if l2.isalnum()==False or l2==':': 
         l2.replace("") 

但是我没有得到想要的结果,我该怎么做?

在此先感谢

回答

1

考虑:

>>> [re.sub(r'[^\w\d.]+',"",e) for e in li] 
['1.5', '1.6'] 

编辑

如果你想保留:

>>> li=[ '{: 1.5}', '{: 1.6}'] 

您可以通过元素的正则表达式使用元素:你可以这样做:

>>> [re.sub(r'[^\w\d.:]+',"",e) for e in li] 
[':1.5', ':1.6'] 
+0

我明白了,但我不想消除“:”,这个正则表达式需要添加还是消除? –

+0

'[^ \ w \ d。] +'里面的项是被保存的东西,任何不是'\ w'(a-zA-Z_)'\ d'(0-9)正在被淘汰。把任何你想保留在括号内。如果你想在'[^ \ w \ d。] +'里面保留':'add。 – dawg