2017-07-20 140 views
-1

我试图从Python 3.5中的字典列表中删除空格。从字典列表中删除空格

我有这样的:

lst_of_dicts = [{'code': 'AB DE', 'score': 30}, 
       {'code': 'DE FG', 'score': 40}] 

而想要这样的:

lst_of_dicts = [{'code': 'ABDE', 'score': 30}, 
       {'code': 'DEFG', 'score': 40}] 

其他answers已经使用字典理解建议.strip(),比如这个:

clean_d = { k:v.strip() for k, v in d.iteritems()} 

但我避风港由于我是一个蟒蛇新手,我无法使它适用于我的数据结构。

+1

你可能有 '分数' 的问题,因为它的类型'int'和'int'没有.strip() –

+0

对于k ,v in item.items(): item [k] = v.replace('','')试试这个 –

+0

[''str.strip()'](https://docs.python.org/3/ library/stdtypes.html#str.strip)返回一个字符串的副本,其中*前导字符和尾部字符被移除。您正在寻找['str.replace()'](https://docs.python.org/3/library/stdtypes.html#str.replace)。 –

回答

5

不要出汗。只需使用for循环:

In [693]: for d in lst_of_dicts: 
    ...:  d['code'].replace(' ', '') 
    ...:  

In [695]: lst_of_dicts 
Out[695]: [{'code': 'ABDE', 'score': 30}, {'code': 'DEFG', 'score': 40}] 

此解决方案非常特定于您的数据。对于在子词典所有的字符串项工作有一个大致的解决方案,你可能会考虑在嵌套循环中的关键迭代:

for d in lst_of_dicts: 
    for k in d: 
     if isinstance(d[k], str): 
      d[k].replace(' ', '') 
+0

+1代替',尽管应该指出,这将只会改变对应于'代码'键的值(这对于OP的例子来说是正确的,但不是一般的解决方案)。 –

+1

@PierceDarragh好点。添加了一个通用的解决方案:) –

+0

这工作,谢谢@COLDSPEED –

1

也许这将做你想做的。但带不能删除字符串内的空间。

def strip_string(value): 
    if isinstance(value, str): 
     value = value.strip() 
    return value 

clean_d = { k: strip_string(v) for k, v in d.iteritems() } 

所以更改strip_string()这样的

def strip_string(value): 
    if isinstance(value, str): 
     value = value.replace(' ', '') # this will remove space 
    return value