2013-04-07 3 views
13

python을 사용하여 SVG 파일을 구문 분석하여 좌표/경로를 추출하고 싶습니다. (이 경로는 "경로"ID 아래에 명시되어 있습니다. 특히 "="... "/>). 이 데이터는 결국 2 축 CNC를 구동하는 데 사용됩니다.Python SVG 파서

나는 그런 경로의 문자열을 반환 할 수있는 라이브러리를 SO와 Google에서 검색 했으므로이를 더 파싱 할 수는 있지만 아무 소용이 없습니다. 그런 도서관이 존재합니까?

답변

18

무시 변환, 당신은 그래서 같은 SVG에서 경로 문자열을 추출 할 수 있습니다 :

from xml.dom import minidom 

doc = minidom.parse(svg_file) # parseString also exists 
path_strings = [path.getAttribute('d') for path 
       in doc.getElementsByTagName('path')] 
doc.unlink() 
+1

당신이 변환이 중요한시기에 대한 어떤 제안이 있습니까 ... 다음 D-문자열을 인쇄하려면? – Veech

+0

@Veech : 변형이있는 경우 중요 할 수 있습니다. 불행히도 그들을 다루기 위해서는 더 많은 코드가 필요합니다. – icktoofay

+1

그래, 나는 그것을 깨닫게되었다. 나는 [cjlano의 svg repo] (https://github.com/cjlano/svg)가 (일부 수정으로) 충분히 만족 스러웠다. – Veech

4

는 D-문자열을 얻기 라인으로 수행 할 수 있습니다 또는 두 개의 svgpathtools를 사용하여. 경로

from svgpathtools import svg2paths 
paths, attributes = svg2paths('some_svg_file.svg') 

은 (단지 곡선 정보를, 아니 색상, 스타일 등을 포함) svgpathtools 경로 객체의 목록입니다. 속성은 각 경로의 속성을 저장하는 해당 사전 객체 목록입니다.

은, 말하자면,

for k, v in enumerate(attributes): 
    print v['d'] # print d-string of k-th path in SVG