Python 使用Join方法组合FirefoxWebElements的文本
我是Python新手,所以我希望有人能帮我解决以下问题Python 使用Join方法组合FirefoxWebElements的文本,python,python-3.x,python-2.7,selenium-webdriver,webdriver,Python,Python 3.x,Python 2.7,Selenium Webdriver,Webdriver,我是Python新手,所以我希望有人能帮我解决以下问题 project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]') separator = ', ' project_tags = separator.join(project_tags) 我知道如果project\u标记是一个数组,那么join方法就可以工作了。因此,我认为上面的代码可能会起作用,因为project\u ta
project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]')
separator = ', '
project_tags = separator.join(project_tags)
我知道如果project\u标记
是一个数组,那么join
方法就可以工作了。因此,我认为上面的代码可能会起作用,因为project\u tags
是一个iterable,但当然不是,因为它是FirefoxWebElements
的iterable
我相信,为了让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
project_tags=browser.find_elements_by_xpath('//a[contains(@class,“活动标签”)]))
对于idx,在枚举中标记(项目标记):
如果idx为0:
tags\u string=tag.text
其他:
tags_string=tags_string+','+tag.text如果idx
是否有我可能不知道的方法可以让我重构并最小化上面的工作示例?我相信这正是您想要的:
tags_string = ", ".join([t.text for t in project_tags])
但是,请注意,它在最后两个标记之间包含一个逗号,您的代码没有,我认为这是一个bug。如果没有,您可以使用:
tags_string = ", ".join([t.text for t in project_tags[:-1]]) + project_tags[-1].text
我不会说这是冗长的;我会说它是无效的。@ScottHunter无效,为什么??(顺便说一句,我已经编辑了我的答案并修复了语法错误)你修复了它,并且不得不问为什么?@ScottHunter认为你可能指的是其他东西。。。。。。。。。。。这就是你来这里要说的吗?Lol你可以尝试使用下面的链接,我意识到这是一个bug,但是我很困惑为什么
idx+1
不能正常工作?例如,如果您有一个包含3项的列表,那么第一次迭代将触发if语句的第一个子句,因为idx
是0
;对于第二次迭代,因为idx+1
是2
而len(list)
是3
,所以应该触发“三元”运算符的前半部分,但它会解析为“三元”运算符的else
???为什么在上一次迭代中,idx
=len(项目标签)-1
,这意味着idx+1
=len(项目标签)
,因此idx+1
是错误的。准确地说。。。这就是我期望发生的事情,但由于某种原因,idx+1
在最后2次迭代中被解析为false,因此您最终会得到这样的输出:rock,hip hoprap
或oranges,bananasapples
,如果表达式仅在最后一次迭代中为false,则得到的输出,事实上发生了什么?香蕉
和橙子
或嘻哈
和rap
之间没有逗号,因为idx+1
对于每个串联过程的最后两个输入都必须解析为false。这就是让我困惑的地方:为什么它在最后两个输入中解析为false,而不仅仅是最后一个输入?