我在字典的值部分添加名称和项目属性的值:
value+=child.get('name') + '\t' + child.text + '\t'
每个文本由选项卡分隔。那么当我稍后处理这个值字符串时,我会在选项卡上拆分并使用for循环遍历列表。
如何访问for循环中的名称和值。至于每个属性,我想一次性获取名称和值,并将其写入文件。目前列表如下:
[A,B,A,B,A,B,A,B]
对于每个a,b我想写:
'<'标签名称= a'>' b'<' / tag'>'
答案 0 :(得分:18)
您可以使用步长2迭代列表,并在每次迭代时获取每个迭代的名称和标记...
for i in range(0,len(list1),2):
name = list1[i]
tag = list1[i+1]
print '<tag name="%s">%s</tag>' % (name, tag)
答案 1 :(得分:4)
编辑:如果您的密钥是唯一的,并且排序无关紧要,那么......
我认为你应该convert your list to a dictionary,然后迭代字典的键:
# assuming you converted your list to a dictionary called values
for k in values:
print '<tag name="%s">%s</tag>' % (k, values[k])
编辑:如果除了打印结果之外你不需要任何字典,那么发布的另一个答案可能是更好的方法。
答案 2 :(得分: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]