#python #web-scraping #split #slice
Вопрос:
Я пытаюсь создать представление о командах и их шансах.
Я хочу сделать это в фрейме данных. Я просчитал их шансы.
Я хочу, чтобы команда и коэффициенты были в отдельных колонках.
Я хочу отдельные игры на отдельных рядах.
Мне удалось вернуть список в форме ниже:
['Buffalo Bills 1.30 Washington Football Team 3.50',
'Kansas City Chiefs 1.35 Los Angeles Chargers 3.25',]
Мне нужно вернуть список или разрезать его, чтобы он выглядел следующим образом:
[['San Francisco 49ers, 1.62, Green Bay Packers, 2.30'],
['Dallas Cowboys, 1.57, Philadelphia Eagles, 2.40],]
Код, используемый на сегодняшний день, приведен ниже:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
wd = webdriver.Chrome('chromedriver',options=chrome_options)
url = str("https://www.ladbrokes.com.au/sports/american-football/nfl")
wd.get(url)
time.sleep(5)
html = wd.page_source
html
SCROLL_PAUSE_TIME = 1
# Get scroll height
last_height = wd.execute_script("return document.body.scrollHeight")
while True:
#Scroll down to bottom
wd.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
games = wd.find_elements_by_class_name("sports-market-primary__prices-inner")
# Calculate new scroll height and compare with last scroll height
new_height = wd.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
result=[]
for i in games:
var = i.text
var = str(var).replace('n',' ')#.split()
result.append(var)
'''
Ответ №1:
Ну, вы можете использовать re
модуль. Вот пример кода:
import re
result = [
"Buffalo Bills 1.30 Washington Football Team 3.50",
"Kansas City Chiefs 1.35 Los Angeles Chargers 3.25",
]
pattern = "([A-Za-z ] ) (d .?d*) ([A-Za-z ] ) (d .?d*)"
pre_compiled = re.compile(pattern)
for i in result:
l = list(*re.findall(pattern, i))
ans = ", ".join(l)
print(l)
print(ans)
print()
Выход:
['Buffalo Bills', '1.30', 'Washington Football Team', '3.50']
Buffalo Bills, 1.30, Washington Football Team, 3.50
['Kansas City Chiefs', '1.35', 'Los Angeles Chargers', '3.25']
Kansas City Chiefs, 1.35, Los Angeles Chargers, 3.25