按最近的时间顺序打印循环的结果
Print the results of the loop in recent time order
如何将两次循环的结果按时间排序?它们是两个不同的循环,但我想通过混合第一个循环和第二个循环来将它们排序在一起,以便及时对所有内容进行排序。基本上这段代码会抓取一些新闻的时间和标题,并将它们打印在文本框中。它们是两个不同的循环。
我写了这段代码,但它不起作用
from datetime import datetime
allnews = news1, news2
allnews.sort()
我没有错误,但是我得到了这个输出,例如:
14.24 TEXAS RANGER #this is loop n.1
14.01 TEXAS RANGER #this is loop n.1
14.20 DETROIT #this is loop n.2
14.13 DETROIT #this is loop n.2
I want to get:
14.24 TEXAS RANGER
14.20 DETROIT
14.13 DETROIT
14.01 TEXAS RANGER
这是我的代码中对解决问题有用的部分。我没有粘贴整个代码,但我只粘贴了我打印的部分
#textbox
textbox = tk.Listbox(window, width=80, height=20, font=('helvetic', 12), selectbackground="#960000", selectforeground="white", bg="white")
textbox.place(x=1, y=1)
def titoli():
#code of scraping....
#TEXAS RANGER
site_texasrangers = requests.get('....')
soup = BeautifulSoup(site_texasrangers.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time= (div.find('span', attrs={'class': 'hh serif'}).text)
tile=(" ".join([span.text for span in div.select("a > span")]))
news1 = (f" {time} {'TEXAS RANGER'}, {title}")
textbox.insert(tk.END, news1)
#DETROIT TIGERS
site_detroit = requests.get('.....')
soup = BeautifulSoup(site_detroit.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time= (div.find('span', attrs={'class': 'hh serif'}).text)
title=(" ".join([span.text for span in div.select("a > span")]))
news2 = (f" {time} {'DETROIT'}, {title}")
textbox.insert(tk.END, news2)
#sorted
from datetime import datetime
allnews = news1, news2
allnews.sort()
titoli()
window.mainloop()
你做错了顺序。首先你必须创建空列表,接下来在循环中你必须将新闻附加到这个列表(不显示),在循环之后你必须对列表进行排序(使用 reverse=True
),然后使用循环将值添加到 textbox
像这样
def titoli():
# --- before loops ---
allnews = []
# --- loops ---
#TEXAS RANGER
site_texasrangers = requests.get('....')
soup = BeautifulSoup(site_texasrangers.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time = div.find('span', attrs={'class': 'hh serif'}).text
title = " ".join([span.text for span in div.select("a > span")])
news = f" {time} {'TEXAS RANGER'}, {title})"
allnews.append(news) # <-- append to list without displaying
#DETROIT TIGERS
site_detroit = requests.get('.....')
soup = BeautifulSoup(site_detroit.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time = div.find('span', attrs={'class': 'hh serif'}).text
title = " ".join([span.text for span in div.select("a > span")])
news = f" {time} {'DETROIT'}, {title})"
allnews.append(news) # <-- append to list without displaying
# --- after loops ---
allnews.sort(reverse=True)
for news in allnews:
textbox.insert(tk.END, news)
如何将两次循环的结果按时间排序?它们是两个不同的循环,但我想通过混合第一个循环和第二个循环来将它们排序在一起,以便及时对所有内容进行排序。基本上这段代码会抓取一些新闻的时间和标题,并将它们打印在文本框中。它们是两个不同的循环。
我写了这段代码,但它不起作用
from datetime import datetime
allnews = news1, news2
allnews.sort()
我没有错误,但是我得到了这个输出,例如:
14.24 TEXAS RANGER #this is loop n.1
14.01 TEXAS RANGER #this is loop n.1
14.20 DETROIT #this is loop n.2
14.13 DETROIT #this is loop n.2
I want to get:
14.24 TEXAS RANGER
14.20 DETROIT
14.13 DETROIT
14.01 TEXAS RANGER
这是我的代码中对解决问题有用的部分。我没有粘贴整个代码,但我只粘贴了我打印的部分
#textbox
textbox = tk.Listbox(window, width=80, height=20, font=('helvetic', 12), selectbackground="#960000", selectforeground="white", bg="white")
textbox.place(x=1, y=1)
def titoli():
#code of scraping....
#TEXAS RANGER
site_texasrangers = requests.get('....')
soup = BeautifulSoup(site_texasrangers.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time= (div.find('span', attrs={'class': 'hh serif'}).text)
tile=(" ".join([span.text for span in div.select("a > span")]))
news1 = (f" {time} {'TEXAS RANGER'}, {title}")
textbox.insert(tk.END, news1)
#DETROIT TIGERS
site_detroit = requests.get('.....')
soup = BeautifulSoup(site_detroit.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time= (div.find('span', attrs={'class': 'hh serif'}).text)
title=(" ".join([span.text for span in div.select("a > span")]))
news2 = (f" {time} {'DETROIT'}, {title}")
textbox.insert(tk.END, news2)
#sorted
from datetime import datetime
allnews = news1, news2
allnews.sort()
titoli()
window.mainloop()
你做错了顺序。首先你必须创建空列表,接下来在循环中你必须将新闻附加到这个列表(不显示),在循环之后你必须对列表进行排序(使用 reverse=True
),然后使用循环将值添加到 textbox
像这样
def titoli():
# --- before loops ---
allnews = []
# --- loops ---
#TEXAS RANGER
site_texasrangers = requests.get('....')
soup = BeautifulSoup(site_texasrangers.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time = div.find('span', attrs={'class': 'hh serif'}).text
title = " ".join([span.text for span in div.select("a > span")])
news = f" {time} {'TEXAS RANGER'}, {title})"
allnews.append(news) # <-- append to list without displaying
#DETROIT TIGERS
site_detroit = requests.get('.....')
soup = BeautifulSoup(site_detroit.content, 'html.parser')
news = soup.find_all('div', attrs={"class": "tcc-list-news"})
for each in news:
for div in each.find_all("div"):
time = div.find('span', attrs={'class': 'hh serif'}).text
title = " ".join([span.text for span in div.select("a > span")])
news = f" {time} {'DETROIT'}, {title})"
allnews.append(news) # <-- append to list without displaying
# --- after loops ---
allnews.sort(reverse=True)
for news in allnews:
textbox.insert(tk.END, news)