2

我有一本像下面这样的字典

d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', 
     "  ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114',
     'MFDTHNAEYH': ' 7.6695035046773761'}

在这本词典中,我试图删除[,但我没有得到它。所以它应该看起来像

d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', 
     'MAPTNNTEYH': ' 7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114',
     'MFDTHNAEYH': ' 7.6695035046773761'}

请帮我。

4

3 回答 3

2
{k.translate(None,'''[ '"'''):v.translate(None,'[') for k,v in d.items()}
于 2013-03-09T16:43:30.100 回答
2

假设您的键中只有字母并浮动值,您可以使用正则表达式消除所有其他字符

import re
d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', "   ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 'MFDTHNAEYH': ' 7.6695035046773761'}
# In the key replace everything else that is not in A-Z with ''
# In value replace everything else that is not in 0-9 or . with ''
d = {re.sub(r'[^A-Z]+','',k):re.sub(r'[^0-9.]+','',v) for k,v in d.items()}
d
{'MAPTNNTEYH': '7.2142815502006803',
 'MFDTHNAEYH': '7.6695035046773761',
 'MFPTNNTEYS': '7.5108109773494114',
 'MNDTHNFEYH': '7.4775763897997019',
 'MNDTNNTEYS': '7.6740344272610006'}
于 2013-03-09T17:08:55.507 回答
1

您似乎只想从键和值前缀中删除字符“[”。str.lstrip 为您完成这项工作。您只需要遍历字典并从键和值中删除字符,同时通过字典理解重新生成字典。

>>> d={'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', "   ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 'MFDTHNAEYH': ' 7.6695035046773761'}
>>> d = {k.strip(" [\"\'"): v.strip(" [\"\'") for k, v in d.items()}
>>> import pprint
>>> pp = pprint.PrettyPrinter(indent = 4)
>>> pp.pprint(d)
{   'MAPTNNTEYH': '7.2142815502006803',
    'MFDTHNAEYH': '7.6695035046773761',
    'MFPTNNTEYS': '7.5108109773494114',
    'MNDTHNFEYH': '7.4775763897997019',
    'MNDTNNTEYS': '7.6740344272610006'}

如果您不使用 Py2.7+,您可以将生成器构造传递给内置dict

>>> d = dict(k.lstrip(" [\"\'"): v.lstrip(" [\"\'") for k, v in d.items())
于 2013-03-09T16:53:12.237 回答