小风_ 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 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题