回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在编写将CSV转换为XML的代码。假设我有一个单子,比如:</p>
<pre><code>input = ['name', 'val', 0, \
'name', 'val', 1, 'tag', 'val', \
'name', 'val', 2, 'tag', 'val', 'tag', 'val', \
'name', 'val', 0]
</code></pre>
<p>此列表中以“name”开头的每个部分都表示一个元素,该元素具有名称、值和可选标记-值对的可变数量。在</p>
<p>我想把它变成:</p>
^{pr2}$
<p>不需要将标记-值对分离为元组,这是在单独的方法中处理的。我有一个解决办法,但不是很像Python:</p>
<pre><code>output=[]
cursor=0
while cursor < len(input):
name=input[cursor]
val=input[cursor+1]
ntags=int(input[cursor+2])
optslice=input[cursor+3:cursor+3+2*ntags]
cursor = cursor+3+2*ntags
print name, val, ntags, optslice, cursor
output.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>([name, val, optslice])
print output
> name val 0 [] 3
> name val 1 ['tag', 'val'] 8
> name val 2 ['tag', 'val', 'tag', 'val'] 15
> name val 0 [] 18
> [['name', 'val', []], ['name', 'val', ['tag', 'val']], ['name', 'val', ['tag', 'val', 'tag', 'val']], ['name', 'val', []]]
</code></pre>
<p>我想我可以把它作为一个列表理解来做,但是每个元素的可变长度让我陷入了一个循环。输入是从CSV解析的,我可以更改格式以更好地适应不同的解决方案。思想?在</p>