elements = local_browsers.find_elements_by_xpath("//p[@class='small margin-top-xsmall margin-bottom-xsmall']")
elements = [obj.text.split('\n') for obj in elems]
return elems
expected_output:
['someuser','password','another']
但得到的结果是:
[['someuser','password','another']]
答案 0 :(得分:1)
因为列表理解的输出是列表,而str.split
的输出是列表,所以您正在列表中获得列表。因此,将str.split
放入列表推导中会得到两个列表。
如果可以假定第一个元素是唯一元素,那么可以通过避免列表理解来解决此问题:
elems[0].text.split('\n')
如果要展平结果,以便所有元素中的所有行都显示在一个列表中:
import itertools
list(itertools.chain(*(obj.text.split('\n') for obj in elems)))
答案 1 :(得分:0)
这种情况很难理解列表。取而代之的是,您可以使用传统的for循环,并扩展列表,而不用随便构建它。
elements = local_browsers.find_elements_by_xpath("//p[@class='small margin-top-xsmall margin-bottom-xsmall']")
elems = []
for obj in elements:
elems += obj.text.split('\n')
return elems