Python 从json格式列表中提取值

Python 从json格式列表中提取值,python,json,dataframe,geojson,Python,Json,Dataframe,Geojson,我有一个包含json数据的列表,如下所示: txt [“{'type':'Point','coordinates':[35.51635659139.5662442]}”, “{‘类型’:‘点’,‘坐标’:[51.50178423,-0.05362636]}”] 我试图从坐标中提取long和lat,但我真的很难做到这一点 当我尝试时: for each in txt: print(each) 它返回: {'type':'Point','coordinates':[35.51635659

我有一个包含json数据的列表,如下所示:

txt
[“{'type':'Point','coordinates':[35.51635659139.5662442]}”, “{‘类型’:‘点’,‘坐标’:[51.50178423,-0.05362636]}”]

我试图从坐标中提取long和lat,但我真的很难做到这一点

当我尝试时:

for each in txt:
    print(each)
它返回:

{'type':'Point','coordinates':[35.51635659,139.5662442]} {‘类型’:‘点’,‘坐标’:[51.50178423,-0.05362636]}

当我尝试时:

json_normalize(json.loads(txt))
我得到以下错误:


TypeError回溯(最近的调用 最后)在 ---->1 json_规范化(json.loads(txt))

C:\ProgramData\Anaconda3\lib\json\uuuu init\uuuuu.py加载(s,编码, cls,对象钩子,解析浮点数,解析整数,解析常数, 物体对钩,**千瓦) 339其他: 340如果不存在(字节,字节数组): -->341 raise TypeError(f'JSON对象必须是str、bytes或bytearray,' 342 f'not{s.名称}) 343 s=s.decode(检测\u编码),“代理步骤”

TypeError:JSON对象必须是str、bytes或bytearray,而不是list

如果有人能帮忙,我将不胜感激


谢谢

字典是一个字符串,因此您需要使用
ast.literal\u eval()
,或者用双引号替换,然后使用
json.loads()
。任何一种方法都可以获得坐标:

鉴于:

txt = ["{'type': 'Point', 'coordinates': [35.51635659, 139.5662442]}", "{'type': 'Point', 'coordinates': [51.50178423, -0.05362636]}"]
备选案文1:

import json

for each in txt:
    each = each.replace("'", '"')
    jsonObj = json.loads(each) 
    print (jsonObj['coordinates'])
备选案文2:

import ast

for each in txt:
    each = ast.literal_eval(each)
    print(each['coordinates'])
输出:

[35.51635659, 139.5662442]
[51.50178423, -0.05362636]

txt中的每一个都有1个:-->2个打印(每个['coordinates'])类型错误:字符串索引必须是整数啊,由于某种原因,dict似乎在字符串中:)。为什么它们是字符串?数据最初是在一个数据帧中,我在其中循环:对于每个跳线['geo']:txt.append(each)
import ast;对于txt中的每一个:…x=ast.literal_eval(每个);。。打印(x['coordinates'])
为什么
cords['geo']
是字符串?:)