使用Python解析SVG文件路径

use*_*711 3 python svg

我正在开发一个机器人项目,从一个Android运行设备拍照然后发送到cloudconvert.org将其转换为SVG,然后所有SVG路径将被转换为xy坐标并连续发送到机器人手臂将绘制它们用笔打开或关闭.

所以我在这个项目中已经走了这么远,我现在唯一的问题是将SVG文件解析为路径列表作为字符串列表.

我试过minidom,但似乎它的工作我可以实际访问SVG文件,但我无法访问路径数据例如'M 100,200 L 200.300'而不是我得到的

>>> from xml.dom import minidom
>>> xmldoc= minidom.parse("C:\Users\DELL\Desktop\drawing-1.svg")
>>> a=xmldoc.getElementsByTagName("svg")[0]
>>> b=a.getElementsByTagName("g")[0]
>>> pth=b.getElementsByTagName("path")[0]
>>> pth
<DOM Element: path at 0x1bb6238>
Run Code Online (Sandbox Code Playgroud)

我只想将dom对象中的数据作为字符串访问,当我尝试时

>>> print (str(pth))
Run Code Online (Sandbox Code Playgroud)

什么都没有出现只有两个空行然后>>>再次出现

Mr.*_*itt 6

这是一个旧线程,但由于接受的答案中的链接不再适用于我处理svg路径的方法.

有一个svg.path模块,它提取路径和其他形状,并提供处理它们的方法.

from xml.dom import minidom
from svg.path import parse_path

svg_dom = minidom.parseString(svg_string)

path_strings = [path.getAttribute('d') for path in svg_dom.getElementsByTagName('path')]

for path_string in path_strings:
    path_data = parse_path(path_string)

    #  now use methods provided by the path_data object
    #  e.g. points can be extracted using 
    #  point = path_data.pos(pos_val) 
    #  where pos_val is anything between 0 and 1
Run Code Online (Sandbox Code Playgroud)