正在使用的代码:
def METRICS():
if os.path.exists(""):
os.remove("")
link = ""
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--window-size=1920,1080")
prefs = {'download.default_directory' : ''}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=options)
driver.get(link)
sleep(10)
all_avg = driver.find_elements_by_xpath('//*[@id="panel-4"]/div/div[1]/div/div[2]/div/plugin-component/panel-plugin-graph/grafana-panel/ng-transclude/div/div[2]/div/div[1]/div')
lst = []
for avg in all_avg:
#print(avg.text)
lst.append(avg.text)
#print(lst)
list = [x.replace('\n',',')for x in lst]
print (list)
输出:
['801,100.0%,802,78.3%,803,99.8%,804,18.5%,805,99.9%,811,100.0%,812,99.9%,813,97.9%,814,99.8%,815,99.9%,816,98.5%,817,100.0%,818,69.9%,819,100.0%,820,100.0%,821,95.9%,822,100.0%,823,100.0%']
我需要的第一套数字,即801 802 803等是在一个列表和百分比%是在另一个。这是这样我就可以在一个DF格式正确。
所需输出:
list_1 = ['801',802',803',804', etc ]
list_2 = ['100%',78.3%,'99.8%','18.5%', etc ]
使用pandasDF并制表后的最终输出:
| Placehol | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 |
|:-------------|:------|:------|:------|:------|:------|:------|:------|:------|:-------|:-------|:------|:------|:------|
| Availability | 99.1% | 98.5% | 67.0% | 87.0% | 98.3% | 98.0% | 96.9% | 99.1% | 100.0% | 100.0% | 95.9% | 98.1% | 98.1% |
2条答案
按热度按时间0mkxixxg1#
您可以使用Python列表切片:https://www.geeksforgeeks.org/python-list-slicing/
嗯,我没有注意到你的
list
只有一个元素。编辑了我的代码示例。v09wglhw2#
除了Vlad提供的解决方案之外,您还可以使用regex模块来解决您的问题。
我想使用的正则表达式模式是
(,|^)((\d+)(\.\d+)?)(,|$)
,它选择没有百分号的数字,另一个是(,|^)((\d+)(\.\d+)?%)(,|$)
,它选择有百分号的数字。我不知道什么是一个字符串的列表,但既然你已经使用了一个列表,我将根据你的输出给予你一个答案:
输出