我有几个带有.svg格式的inkspace生成的groundtruth文件。为了验证用python编写的程序的精度,我需要读取.svg文件中的'rect'字段,它们的坐标和其他属性,例如轮廓颜色和id。
我找到了这个话题: Library to parse SVG in Ruby or Python
建议使用pysvg库,但我找不到有关psvg.parser.parse模块的文档。
有什么建议吗?
由于
答案 0 :(得分:0)
您可以使用python xml解析器,因为svg是xml的一种。使用xpath
或findall
提取所需的元素,并读取元素属性以提取所需的信息:
import xml.etree.ElementTree as ET
import re
# for parsing svg as a string:
svg = ET.fromstring(svg_string)
# for parsing svg from a file:
svg = ET.parse(svg_file)
rects = svg.findall('rect')
for rect in rects:
width = rect.attrib['width']
height = rect.attrib['height']
x = rect.attrib['x']
y = rect.attrib['y']
请记住,如果rect
元素是组的一部分,则还必须解析它们所属的所有组的转换。这可能会非常棘手。