如图,如何基于Python,指定特定的序号index,得到对应的4个坐标值,返回用字典即可
from bs4 import BeautifulSoup
import json
# 测试
xml_file = """
<segementation_result>
<frame index="1" rejected="false">
<point name="bl" x="123" y="467"/>
<point name="tl" x="234" y="768"/>
<point name="tr" x="234" y="77"/>
<point name="br" x="724" y="775"/>
</frame>
<frame index="2" rejected="false">
<point name="bl" x="13" y="987"/>
<point name="tl" x="33" y="578"/>
<point name="tr" x="345" y="653"/>
<point name="br" x="675" y="564"/>
</frame>
</segementation_result>
"""
# 定义函数 frame_index_value 的index值, xml_file
def get_frame_point(frame_index_value: int, xml_file: str) -> dict:
# 解析xml
soup = BeautifulSoup(xml_file, "xml")
# 定义字典
frame_points = {}
for items in soup.find_all('frame'):
# frame 对应的index当key
frame_points[items.get("index")] = []
for item in items.find_all('point'):
# 定义point字典
point = {}
# point 对应的name当key, 值为列表, 存储, (x,y)
point[item.get("name")] = (item.get("x"), item.get("y"))
# 写入点值
frame_points[items.get("index")].append(point)
# 返回 frame_index_value 对应的点
return frame_points.get(str(frame_index_value))
if __name__ == "__main__":
print(get_frame_point(1, xml_file))
[{'bl': ('123', '467')}, {'tl': ('234', '768')}, {'tr': ('234', '77')}, {'br': ('724', '775')}]