Python 同一行中2个循环的打印结果

Python 同一行中2个循环的打印结果,python,web-scraping,printing-web-page,Python,Web Scraping,Printing Web Page,我对Python中的web抓取相当陌生;在网上阅读了关于这个主题的大部分教程后,我决定试一试。我终于有一个网站工作,但输出格式不正确 import requests import bs4 from bs4 import BeautifulSoup import pandas as pd import time page = requests.get("https://leeweebrothers.com/our-food/lunch-boxes/#") soup = BeautifulSou

我对Python中的web抓取相当陌生;在网上阅读了关于这个主题的大部分教程后,我决定试一试。我终于有一个网站工作,但输出格式不正确

import requests
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time


page = requests.get("https://leeweebrothers.com/our-food/lunch-boxes/#")
soup = BeautifulSoup(page.text, "html.parser")

for div in soup.find_all('h2'): #prints the name of the food"
    print(div.text)
for a in soup.find_all('span', {'class' : 'amount'}): #prints price of the food
    print(a.text)
输出

我希望食品的名称与相应的食品价格并排打印,并用“-”连接。。。非常感谢您的帮助,谢谢

编辑:在下面@Reblochon Masque评论之后-我遇到了另一个问题;正如你所看到的,有一个$0.00是网站内置购物车中的一个值,我如何将其作为异常值排除,并继续向下循环,同时确保价格中的其他项目“向上移动”以对应正确的食物


您可以压缩两个结果:

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for div, a in zip(names, rest):
    print('{} - {}'.format(div.text, a.text))
    # print(f"{div.text} - {a.text}")   # for python > 3.6

您可以压缩两个结果:

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for div, a in zip(names, rest):
    print('{} - {}'.format(div.text, a.text))
    # print(f"{div.text} - {a.text}")   # for python > 3.6

最佳实践是在for循环中使用
zip
函数,但我们也可以这样做。这只是为了说明我们可以使用
索引这两个列表

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for index in range(len(names)):
    print('{} - {}'.format(names[index].text, rest[index].text))

最佳实践是在for循环中使用
zip
函数,但我们也可以这样做。这只是为了说明我们可以使用
索引这两个列表

names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for index in range(len(names)):
    print('{} - {}'.format(names[index].text, rest[index].text))

非常感谢!这正是我要找的!嘿,老兄,你知道如何删除异常值吗?我编辑了原始问题以反映您的代码您真的应该在这里问一个新问题;这是一个与第一个完全不同的问题。非常感谢!这正是我要找的!嘿,老兄,你知道如何删除异常值吗?我编辑了原始问题以反映您的代码您真的应该在这里问一个新问题;这与第一个问题完全不同。