从字符串格式的对象中提取键

Extract a key from an object in string format

如何从此字符串 "[{'id': 53, 'name': 'Thriller'}, {'id': 18, 'name': 'Drama'}]"

中提取 name

我试过使用这个重新命令:

re.findall(r"'name': \D{1,}", text)

但是好像不行

我也试过使用json.loads(text) 但它给出了错误

JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)

知道如何解决这个问题吗?

使用ast.literal_eval

import ast

s = "[{'id': 53, 'name': 'Thriller'}, {'id': 18, 'name': 'Drama'}]"

lst = ast.literal_eval(s)
names = [d["name"] for d in lst]
print(names)

输出

['Thriller', 'Drama']

作为替代方案,使用第三方模块 pyyaml,如下所示:

import yaml

s = "[{'id': 53, 'name': 'Thriller'}, {'id': 18, 'name': 'Drama'}]"

lst = yaml.load(s, Loader=yaml.Loader)
names = [d["name"] for d in lst]
print(names)

输出

['Thriller', 'Drama']