单引号内的列表

List within single quotes

我有一个单引号列表。

'[{"Name":"name1","value":"value1"},{"name":"name2","value":"value2"}]'

我将其作为输入参数接收,我想将其分配给 python 中不包含单引号的变量。

你能帮忙吗?

收到的示例数据接近于以下内容..

 '[{"name":"emp_id","value":3232323},{"name":"dd_approval","value":"-paid -fulltime \"05/03/21 19:46\" \"05/04/21 19:46\" xyz@dmuil.com 3232323"}]'
 json.loads(this string)  

报错如下

File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

您拥有的不是 list,而是表示对象列表的 JSON 字符串,将其加载到 python 将导致 list dict

import json
a = '[{"Name":"name1","value":"value1"},{"name":"name2","value":"value2"}]'
content = json.loads(a)
print(content) # [{'Name': 'name1', 'value': 'value1'}, {'name': 'name2', 'value': 'value2'}]

您可以使用ast.literal_eval

import ast
x = ast.literal_eval('[{"Name":"name1","value":"value1"},{"name":"name2","value":"value2"}]')

如果我在 x 上执行 type(),我将看到 <class 'list'>

此外,此列表中的所有内容都会变成其所需的形式。下面的代码证明了这一点。

import ast
x = ast.literal_eval('[{"Name":"name1","value":"value1"},{"name":"name2","value":"value2"}]')
print(x[0])
print(type(x[0]))

输出

{'Name': 'name1', 'value': 'value1'}
<class 'dict'>