xpath 中的变量无法正常工作

Variable within xpath is not working correctly

这个有效:

i = 1
num = '3.1.' + str(i)
if (num == '3.1.1'):
    print("correct")

这有效:

num = '3.1.1'
for content in tree.findall(".//Section/Section/Section[@SectionNumber='{}']".format(num)):
    print("correct")

但这不起作用: (没有错误,只是打印不正确)

i = 1
num = '3.1.' + str(i)
for content in tree.findall(".//Section/Section/Section[@SectionNumber='{}']".format(num)):
    print("correct")

我合并字符串的时候出了什么问题?谢谢。

我无法重现您描述的行为。以下 Python 代码练习了您问题中出现的所有三个示例:

from xml.etree import ElementTree as etree

data = """
<Document>
  <Section>
      <Section>
          <Section SectionNumber="3.1.1">
              This is a test.
          </Section>
      </Section>
  </Section>
</Document>
"""


tree = etree.fromstring(data)

print("Test 1")
i = 1
num = "3.1." + str(i)
if num == "3.1.1":
    print("correct")
print()

print("Test 2")
num = "3.1.1"
for content in tree.findall(
    ".//Section/Section/Section[@SectionNumber='{}']".format(num)
):
    print("correct")
print()

print("Test 3")
i = 1
num = "3.1." + str(i)
for content in tree.findall(
    ".//Section/Section/Section[@SectionNumber='{}']".format(num)
):
    print("correct")
print()

运行 上面的代码产生:

Test 1
correct

Test 2
correct

Test 3
correct

如果您 运行 此代码得到不同的结果,或者如果您可以更新您的问题以包含一个完整的、运行 能够产生您所描述的行为的示例,我会很高兴仔细看看。