小风_ 2022-04-29 13:46 采纳率: 100%
浏览 32
已结题

利用python进行xml解析的问题

如图,如何基于Python,指定特定的序号index,得到对应的4个坐标值,返回用字典即可

img

  • 写回答

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')}]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 修改了问题 4月29日
  • 创建了问题 4月29日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了