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