如图,如何基于Python,指定特定的序号index,得到对应的4个坐标值,返回用字典即可
2条回答 默认 最新
- 「已注销」 2022-04-29 16:02关注
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')}]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报