11

我在字典的 value 部分中添加了一个项目的名称和属性值:

value+=child.get('name') + '\t' + child.text + '\t' 

每段文本都由一个制表符分隔。因此,当我稍后处理这个值字符串时,我在选项卡上拆分并有一个 for 循环来迭代列表。

如何访问 for 循环中的名称和值。至于每个属性,我想一次性获取名称和值并将其写入文件。目前该列表如下所示:

[a,b,a,b,a,b,a,b]

对于每个 a,b 我想写:

'<' 标签名=a '>' b '<' /tag '>'

4

3 回答 3

20

您可以使用步长 2 迭代列表,并在每次迭代中获取名称和标记...

for i in range(0,len(list1),2):
    name = list1[i]
    tag = list1[i+1]
    print '<tag name="%s">%s</tag>' % (name, tag)
于 2012-08-01T17:02:04.903 回答
4

编辑:如果您的键是唯一的,并且顺序无关紧要,那么...

我认为您应该将列表转换为字典,然后遍历字典的键:

# assuming you converted your list to a dictionary called values

for k in values:
   print '<tag name="%s">%s</tag>' % (k, values[k])

编辑:如果您不需要字典来打印结果,那么发布的另一个答案可能是更好的方法。

于 2012-08-01T17:02:20.900 回答
4

首先,使用 string += string2 是一个坏主意,因为每次它都会复制到一个新字符串。

value+=child.get('name') + '\t' + child.text + '\t'

应该

values = ((child.get('name'),child.text) for child in children)

然后当您打印时,只需执行

for name,text in values:
    print '<tag name="{name}">{text}</tag>'.format(name=name,text=text)

如果出于某种原因,您真的想要选项卡,那么您将不得不将值构造函数更改为列表(来自生成器)并执行以下操作:

''.join((name+'\t'+value+'\t' for name,value in values))[:-1]
于 2012-08-01T17:07:41.223 回答