小风_ 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 画个数据流程图,手画也行
  • ¥60 AS自带模拟器AVD Root 和 Xposed安装
  • ¥15 Esp32的microPython设备中main.py文件无法开机自启动
  • ¥30 哪位搞Android的编程师可以帮我远程一下,悬赏30元
  • ¥15 solidity部署上合约,可以mint,也继承接口了,在区块链也不显示代币名字
  • ¥15 讨论 博士论文交互项怎么讨论?
  • ¥50 在集成BiLSTM和GCN模型时遇到了问题
  • ¥33 集成BiLSTM模型和GCN模型时,前模型的输出不匹配后模型的输入
  • ¥15 关于液体厚度提取,和铺展轨迹数据化处理
  • ¥20 对方微信是wxid如何添加成好友?或者转换成微信号?