小风_ 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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度