【发布时间】:2019-10-23 15:29:29
【问题描述】:
我用 VGG 注释器注释了一些视频帧,它为我提供JSON 格式的注释,并希望对其进行解析以提取我需要的值(x,y 坐标)。
我查看了该站点上的其他帖子,但似乎没有什么与我的情况相符,因为文件名的长度发生了变化,即。帧编号从 0 到 9,然后从 10 到 99、100 到 999、1000 到 9999,增加一位。
我尝试过import glob 并使用通配符范围、单个字符和星号。
我现在的代码:
#Edited
while count < 1200:
x = data[key]['regions']['0']['shape_attributes']['cx']
y = data[key]['regions']['0']['shape_attributes']['cy']
pts = (x, y)
xy.append(pts)
count += 1
f = open("coordinates.txt", "w")
f.write(xy)
f.close()
JSON 看起来像:
"shape_attributes": {
"name": "point",
"cx": 400,
"cy": 121
},
"region_attributes": {}
}
}
},
"frame48.jpg78647": {
"fileref": "",
"size": 78647,
"filename": "frame48.jpg",
"base64_img_data": "",
"file_attributes": {},
"regions": {
"0": {
"shape_attributes": {
"name": "point",
"cx": 404,
"cy": 114
},
"region_attributes": {}
}
}
编辑:我要将 JSON 转换为 .txt 文件并解析它以获取我的值,因为我现在不知道如何直接这样做。
我尝试转换为字符串并按以下方式解析字符串: 这完成了获取 x, y 坐标(3 位整数)的工作,仅附加到一个列表中,我将其转换为 (x,y) 的元组列表并打印到文本文件以供以后用作标签神经网络,我在其中跟踪电视上网球比赛中网球的坐标。
xy.append(re.findall(r'\b\d\d\d\b', datatxt))
【问题讨论】:
-
看起来您在字典中没有密钥
[f-r]*。你确定你有吗? -
@balderman 我只是想拿起以 f 开头的密钥,即。
'frame48.jpg78647'。所以基本上我想要通配符,所以它是frame+wc+.+jpg+wc其中wc代表通配符。 -
如果你想从字典中获取一个值,你需要知道确切的键。这就是字典的工作原理。
标签: python regex filenames glob