Python etree iterfind尝试将变量传递给函数字符串

时间:2018-03-31 19:32:56

标签: python xml

我找不到合适的语法或方法来做到这一点,这就是我伸出援手的原因。

我正在使用python 2.7 lxml etree

我的代码与此类似:

for y in mytree.iterfind('./level1/level2/level3/[2]'):
  print y.tag, y.text

基本上在关卡的第二次迭代中打印所有可用的标签和文本。 (我知道有多少,我没有索引或使函数工作的问题。)

我正在尝试使用' i'作为一个定义的变量(逐步增加' i'到定义的项目数量)。

这不起作用:

for y in mytree.iterfind('./level1/level2/level3/[i]'):
  print y.tag, y.text

我还尝试将字符串创建为变量(将文本与' i变量连接为字符串,但是python不再认识到它是一个函数。

任何建议或帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要使用i的值构建路径字符串,例如(未测试):

for y in mytree.iterfind('./level1/level2/level3/[%d]'%(i)):
  print y.tag, y.text

如果有疑问,请在interfind调用之外构造字符串,以便打印它,例如(另):

for i in range(3): # or whatever the i loop is...
    pathstr = './level1/level2/level3/[%d]'%(i)
    print pathstr
    for y in mytree.iterfind(pathstr):
        print y.tag, y.text