python - 如何将二合一列表理解语句
问题描述
我正在抓取 HTML 页面中呈现的文本。我使用列表理解来处理来自 HTML 页面的文本数据。
我正在从网页中获取两个不同的对象(data、data2),我想将这两个对象都写入它们自己的列表中。
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)
解决方案
我认为这段代码应该可以工作,但我无法尝试,因为我没有数据:
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")]
推荐阅读
- php - 删除第一行并用php处理xml文件
- c++ - 特征向量作为 ODEINT 积分参数
- .net - 无法在 EF6.3 中执行查询
- asp.net - IIS 服务器上的 ASP.NET 端点 404
- c# - 寻找一种方法来消除 ASP.NET Core 中的临时数据库存储
- c - 这个函数总是有四行输出吗?
- spring - 如果在存储库中调用 @PreAuthorize 怎么不会被检查?
- ibeacon - 通过蓝牙信号强度提高 ContactTracing Api 效率
- javascript - 有没有办法将文本写入文件,然后将其读入 JavaScript 中的对象
- android - 如何打印登录 Flutter?