我是Python的新手,所以我希望有人可以帮助我解决以下问题。
project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]')
separator = ', '
project_tags = separator.join(project_tags)
我知道,如果project_tags
是一个数组,则join
方法会起作用。因此,我认为由于project_tags
是可迭代的,因此上面的代码可能会起作用,但是由于FirefoxWebElements
是可迭代的,所以当然没有。
我相信,要使join
在这种情况下工作,我要做的就是指向每个FirefoxWebElement
的文本。 即使我可以通过其他几种方式实现目标,但我只是想知道这是否可行?
其中一种似乎很冗长的方法是:
project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]')
for idx, tag in enumerate(project_tags):
if idx is 0:
tags_string = tag.text
else:
tags_string = tags_string + ', ' + tag.text if idx < len(project_tags) else tags_string + tag.text
是否有我可能不知道的方法可以重构和最小化上面的工作示例?
答案 0 :(得分:0)
我相信这可以满足您的需求
tags_string = ", ".join([t.text for t in project_tags])
但是请注意,它在最后2个标记之间包含一个逗号,您的代码中没有逗号,我认为这是一个错误。如果没有,您可以使用:
tags_string = ", ".join([t.text for t in project_tags[:-1]]) + project_tags[-1].text