Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从dict列表中切片每个dict中的字符串值?_Python_Dictionary - Fatal编程技术网

Python 从dict列表中切片每个dict中的字符串值?

Python 从dict列表中切片每个dict中的字符串值?,python,dictionary,Python,Dictionary,我觉得这个问题的答案不是很复杂,但我一辈子都想不出来 我有一份字典清单。字典中的键是整数0、1、2。值是包含无关信息的字符串,相关信息在括号中。我希望对字符串进行切片,使括号之间的内容成为新值。我想以这种方式更新每一本词典,然后将每一本词典重新打包到它的列表中 让我们假设这就是我所拥有的: Original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'}, {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}] 这就是我

我觉得这个问题的答案不是很复杂,但我一辈子都想不出来

我有一份字典清单。字典中的键是整数0、1、2。值是包含无关信息的字符串,相关信息在括号中。我希望对字符串进行切片,使括号之间的内容成为新值。我想以这种方式更新每一本词典,然后将每一本词典重新打包到它的列表中

让我们假设这就是我所拥有的:

Original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'}, {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}]
这就是我希望函数返回的结果:

[{1: 'pear', 2: 'apple'}, {0: 'cat', 1: 'dog'}]
我该怎么做呢?编辑:我知道如何按如下方式分割字符串:


slicev=v.split'[',1[1]。split']'[0]

您可以使用正则表达式

import re
Original = [{1: "xxx [pear] yyy", 2: "xxx [apple] zzz"}, {0:" aaa [cat] yyy", 1: "bbb [dog] zzz"}]
for item in Original:
    for key in item:
         item[key]= re.findall("\[(.*?)\]",item[key])[0]

print Original
结果

[{1: 'pear', 2: 'apple'}, {0: 'cat', 1: 'dog'}]
请注意,这将更改原始列表。

我认为re模块可以帮助您:

import re

original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'},
            {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}]

data = [{k: re.search(r'\[(.*?)\]', v).group(1) for k, v in d.items()}
        for d in original]

为什么不直接使用正则表达式?
import re

original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'},
            {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}]

data = [{k: re.search(r'\[(.*?)\]', v).group(1) for k, v in d.items()}
        for d in original]