分割一个已经在列表中的字符串

时间:2019-07-18 19:35:49

标签: python selenium-webdriver

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']]

2 个答案:

答案 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