要解析的输入文本文件并生成)的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