Python:无法通过字符串输入来概括函数。对于循环不进行迭代

时间:2015-02-10 13:13:31

标签: python xml for-loop elementtree function

我有一个包含一些内容的xml树,我想要计算有多少树元素具有特定关键字。这是xml结构

<tree>
    <tw>
        <con>Bla bla bla</con>
    </tw>
    <tw>
        <con>Bla bla bla bla bla</con>
    </tw>
    ...
</tree>

这就是我写的功能。我正在使用python 2.7。

def conta_una(tree, kw1):
    conta=[]
    for i, tw in enumerate(tree.findall('tw')):
        for con in tw.findall('con'):
            if con.text and kw1 in con.text:
                conta.append(tw.getchildren())
    print(len(conta))

然后我在python中导入函数,我定义了两个变量并调用函数

from xml.etree.ElementTree import ElementTree
tr1 = ElementTree().parse('/path/file.xml')
keyword = "word"
conta_una(tr1, keyword)

无论我在变量keyword中放入什么关键字,我总是得到1作为结果。但是如果我像这样明确地编写函数

tree = ElementTree().parse('/path/file.xml')
conta=[]
for i, tw in enumerate(tree.findall('tw')):
    for con in tw.findall('con'):
        if con.text and "word" in con.text:
            conta.append(tw.getchildren())
print(len(conta))

我得到了正确的结果。我确定我在函数定义中犯了一个非常愚蠢的错误,但即使查看手册我也无法理解。

0 个答案:

没有答案