在Python中如何使用存储为字符串的变量调用函数

时间:2011-03-25 01:41:26

标签: python beautifulsoup

我的问题类似于描述here,但有点复杂。有BeautifulSoup对象(存储在列表中),我想找到一些其他标签。我想要查找的标签信息存储在字符串中。 即:

a= [...] #(list of BeautifulSoup objects)
next="findNext('span')"

b=[ getattr(c,next).string for c in a]

不起作用。我做错了什么。

2 个答案:

答案 0 :(得分:1)

让我觉得你想要的是:

b = [ eval("c." + next).string for c in a ]

这将为列表findNext('span')的每个元素c调用a,并在列表findNext中形成每个b调用的结果列表

答案 1 :(得分:0)

尝试

trees = [...] #(list of BeautifulSoup objects)
strings = [tree.findNext('span').string for tree in trees]

或者,如果你真的必须,

trees = [...] #(list of BeautifulSoup objects)
next = ('findNext', ('span',))
strings = [getattr(tree, next[0])(*(next[1])).string for tree in trees]

所以我想下一个问题是,将"findNext('span')"转换为('findNext', ('span',))的简单方法是什么(请记住可能有多个参数)?