파일을 XML 파일로 구문 분석하려면 이 프로그램을 도와주세요.

StackOverflow https://stackoverflow.com/questions/1511950

  •  19-09-2019
  •  | 
  •  

문제

입력 텍스트 파일을 구문 분석하고 a) XML 파일 및 b) SVG(또는 XML) 파일을 생성합니다.

입력 텍스트 파일(input.txt)에는 전국의 여러 농산물 유통센터 및 보관센터에 대한 설명이 포함되어 있습니다.각 줄은 각각 여러 속성을 갖는 단일 배포 센터(dcenter) 또는 저장 센터를 설명합니다.각 속성 이름(예: 코드)은 =를 사용하여 해당 값으로 구분됩니다.

예시(input.txt)

dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1

원하는 프로그램 출력:

출력 1

<?xml version="1.0"?>
<dcenters>
<dcenter code="d1">
<loc> San Jose </loc>
<x> 100 </x>
<y> 100 </y>
<ctype> ct1 </ctype>
</dcenter>
<storage code="S1">
<locFrom> d1 </locFrom>
<x> 150 </x>
<y> 150 </y>
<rtype> rt1 </rtype>
</storage>
<storage code="S2">
<locFrom> d1 </locFrom>
<x> 50 </x>
<y> 200 </y>
<rtype> rt1 </rtype>
</storage>

프로그램을 도와주세요.정말 감사하겠습니다.

도움이 되었습니까?

해결책

입력이 문자열 s에 있다고 가정합니다.직접 할당 또는 file.read에서:

s="""dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1"""

그러면 다음과 같이 할 수 있습니다.

print '<?xml version="1.0"?>'
print "<dcenters>"
for line in s.splitlines():
    type, fields = line.split(":")
    params = fields.split(",")
    code = params[0].split("=")[1].strip()
    print '<%s code="%s">' % (type, code)
    for p in params[1:]:
        ptype, pvalue = p.strip().split("=")
        print '<%s> %s </%s>' % (ptype, pvalue, ptype)
    print '</%s>' % type
print "</dcenters>"

샘플 출력에서 ​​d2가 누락된 이유를 잘 모르겠습니다.나는 그것이 실수라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top