我有一个字符串类型列,其中包含嵌套字典对象的元素列表。 E.g
str = '[{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["nyc","atlanta"],
"description":"some description",
"content_type":"media"},
{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["chicago","dallas"],
"description":"some description2",
"content_type":"web"},
{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["las vegas","buffalo"],
"description":"some description3",
"content_type":"media"}]'
这实际上是一个火花数据帧中的一个列,它是一个字符串类型。所以我想知道如何将字符串的内容转换为列表,以便我可以使用json.loads转换列表中的每个元素。
有什么想法吗?
答案 0 :(得分:1)
json.loads应该可以正常使用这些数据 - 它将返回一个dicts列表。
答案 1 :(得分:1)
import json
msg = '''[{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["nyc","atlanta"],
"description":"some description",
"content_type":"media"},
{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["chicago","dallas"],
"description":"some description2",
"content_type":"web"},
{"method":
{"super":0.03,"normal":0.8,"par":0.15,"goal":0.01,"fact":0.04},
"city":["las vegas","buffalo"],
"description":"some description3",
"content_type":"media"}]'''
json.loads(msg)[0]
out:
{'city': ['nyc', 'atlanta'],
'content_type': 'media',
'description': 'some description',
'method': {'fact': 0.04,
'goal': 0.01,
'normal': 0.8,
'par': 0.15,
'super': 0.03}}
答案 2 :(得分:-1)
有几个步骤可以解决这个问题,我希望json.loads是您完成后甚至需要的。 如果您按照这些步骤操作,您的字符串将转换为字典列表(并且几乎不需要json.loads)
第一步,删除括号" []"从字符串 假设您将字符串设置为变量" value"运行这些行:
value = value[1:]
value = value[:-1]
接下来,我们将准备使用pythons .split()函数,它将任何字符串转换为列表,方法是将它与您选择的任何字符分开。 问题是,你的字符串中有两个级别的逗号。一个在列表之间,另一个在字典值之间。 所以在我们分割线之前,让我们把你的列表的逗号变成半颜色,这样我们的split函数就可以将字符串吐出到适当的位置。使用此代码:
value = value.replace('},','};')
最后,使用此代码将字符串拆分为列表 value = value.split(&#39 ;;')
如果这对您有用,请告诉我 古德勒克