如何将二合一列表理解语句

时间:2019-01-31 17:35:54

标签: python python-3.x list-comprehension

我正在抓取HTML页面中呈现的文本。我使用列表推导来处理来自HTML页面的文本数据。

我要从网页上抓取两个不同的对象(数据,数据2),我想将这两个对象都写入它们自己的列表中。

data= driver.find_elements_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div/div/div[2]/div/div/div[1]/div/div[5]/div/div[5]')
data2=driver.find_elements_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div/div/div[2]/div/div/div[1]/div/div[5]/div/div[6]')

我正在使用Selenium Webdriver,所以当对象返回时,我需要遍历该对象并获取所有文本(这就是在列表理解的第一轮中将列表分配给变量text和text2的情况)

text = [i.text for i in data]

text2 = [i. text for i in data2]

第一次理解列表后,列表将返回以下内容

['Running\nRunning Normally\nShavings\n47.6%\n739\n739\n3:38:53\n1:31:51\n0:00:00']

我想将字符串的内容分成一个列表,所以这就是为什么我要进行第二个列表理解的原因。

text=[i.split("\n")[:] for i in text]

text2=[i.split("\n")[:] for i in text2]

当我打印列表时,它会返回

[['Running Slow', 'Slow and/or Small Stops', 'Shavings', '48.7%', '800', '800', '3:56:43', '1:31:51', '0:00:00']]

关于如何清理或使其工作更好的任何建议?

代码:

data= driver.find_elements_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div/div/div[2]/div/div/div[1]/div/div[5]/div/div[5]')
data2=driver.find_elements_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div/div/div[2]/div/div/div[1]/div/div[5]/div/div[6]')

text = [i.text for i in data]

text2 = [i. text for i in data2]

text=[i.split("\n")[:] for i in text]

text2=[i.split("\n")[:] for i in text2]

print(text)
print(text2)

1 个答案:

答案 0 :(得分:1)

我认为这段代码应该可以工作,但是由于我没有数据,所以无法尝试:

text=[j for i in data for j in i.text.split("\n")]
text2=[j for i in data2 for j in i.text.split("\n")]