Для начала, вы можете переписать все шаги в вашем цикле как отдельную функцию:
def get_price(post):
price = post.find_all("span", {"class" : "s-item__price"})[0].text
price2 = price.strip( '$' )
price3 = price2.replace(",", "")
price4 =price3[0:5]
price5 = float(price4)
price6 = round(price5)
return price6
Теперь ваш цикл можно переписать как
for post in soup.find_all("li",{"class" : "s-item"}):
print(get_price(post))
Что такоеВы спросите?Ну, встроенная функция Python sum
имеет интерфейс, который позволяет вам передавать генератор следующим образом:
sum(get_price(post) for post in soup.find_all("li",{"class" : "s-item"}))
Или эквивалентно:
sum(map(get_price, soup.find_all("li",{"class" : "s-item"})))
Вы можете переписать свою функцию какоднострочный:
def get_price(post):
return round(float(post.find_all("span", {"class" : "s-item__price"})[0].text.strip('$').replace(',', '')[:5]))
Это не сделает ваш код более разборчивым, но вы можете избежать написания отдельной функции здесь, используя эквивалентное выражение:
sum(round(float(post.find_all("span", {"class" : "s-item__price"})[0].text.strip('$').replace(',', '')[:5])) for post in soup.find_all("li",{"class" : "s-item"}))