如何从python中的字典中删除某些字符?

时间:2017-01-28 22:52:29

标签: python-3.x

假设我有一个包含以下键的字典:值

{A1:2345, A2:23, A3:1}

我只想从A1中删除'23',并期望输出为

{A1:45, A2:23, A3:1}

请咨询

2 个答案:

答案 0 :(得分:1)

根据您的评论,23只会出现一次,您可以在字符串上调用re.sub并将其写回字典。因此,如果字典名为dic

import re

dic['A1'] = re.sub('23','',dic['A1'],1)

,1是可选的,并表示您只会替换第一次出现(但它可以提高效率)。例如:

$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> dic={'A1':'2345', 'A2':'23', 'A3':'1'}
>>> import re
>>> dic['A1'] = re.sub('23','',dic['A1'],1)
>>> dic
{'A2': '23', 'A3': '1', 'A1': '45'}

修改

根据您的评论,您希望从2以外的所有元素的值中删除3'A9' s。您可以使用for循环来实现此目的:

import re

for key,val in dic.items():
    if key != 'A9':
        dic[key] = re.sub('2|3','',val)

正则表达式中的管道(|)用作“或”。所以:

$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> dic={'A1':'5', 'A2':'1', 'A3': '2379', 'A4':'8', 'A5':'37', 'A6':'379', 'A7':'6', 'A8':'4', 'A9':'23'}
>>> import re
>>> 
>>> for key,val in dic.items():
...     if key != 'A9':
...         dic[key] = re.sub('2|3','',val)
... 
>>> dic
{'A3': '79', 'A2': '1', 'A4': '8', 'A6': '79', 'A1': '5', 'A8': '4', 'A5': '7', 'A9': '23', 'A7': '6'}

答案 1 :(得分:1)

  

我只想从A1中移除'23'......那将不会发生23   不会发生两次

在您的简单情况下,使用repr()函数就足够了:

d = {'A1':2345, 'A2':23,'A3':1}
d['A1'] = int(repr(d['A1'])[2:]) # getting slice of characters starting from index 2

print(d)

输出:

{'A1': 45, 'A3': 1, 'A2': 23}

如果所有值都是字符串,则更简单:

d['A1'] = d['A1'][2:]