Python-lxml解析svg-fi

2024-10-01 15:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从http://kanjivg.tagaini.net/解析.svg文件,但无法成功提取其中的信息。在

编辑1:(完整文件)http://www.filedropper.com/0f9ab

0f9ab.svg的一部分如下所示:

<svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
<g id="kvg:StrokePaths_0f9ab" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
<g id="kvg:0f9ab" kvg:element="嶺">
    <g id="kvg:0f9ab-g1" kvg:element="山" kvg:position="top" kvg:radical="general">
        <path id="kvg:0f9ab-s1" kvg:type="㇑a" d="M53.26,9.38c0.99,0.99,1.12,2.09,1.12,3.12c0,0.67,0.06,8.38,0.06,13.01"/>
        <path id="kvg:0f9ab-s2" kvg:type="㇄a"
    </g>
</g>
</g>

我的.py文件:

^{pr2}$

目的

我尝试了我能想到的各种操作,但是没有从.svg文件中获取任何数据。 我想提取kvg:element="kanji"中的汉字(日语字符)(它们处于不同的深度级别)。在

问题

  1. 使用lxml是不是使用了错误的包?在
  2. 如果没有,如何从已解析的.svg文件中提取信息?在

其他解决方案

  • 我当然可以把文件读成字符串然后搜索 对于kvg:element=",但我想以正确的方式提取xml /svg。在
  • 我以前用过xmltodict,但是我的代码在提取{}时变得非常混乱,因为它们处于不同的深度级别。在

Tags: 文件pathsvg信息idhttpstrokewww
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:39

.parse()返回一个ElementTree,它表示树的整体。要查询单个节点,您需要一个Element,很可能是树的根元素。在

将部分代码替换为:

xml = ET.parse('0f9ab.svg')
svg = xml.getroot()
print(svg)  # <lxml.etree._ElementTree object at 0x7f3a2f659ec8>

我想你会成功的。在

还要注意,.findall()需要一个相对路径,在您的例子中,还需要一个名称空间限定符:

^{pr2}$

相关问题 更多 >

    热门问题