在Python新闻API中添加新闻和日期
我是一名新的python开发人员。我一直试图把日期放在新闻旁边,这样标题和日期就可以在一起了,但我总是出错。当我删除日期时,它工作正常,但当我尝试放置日期时,它显示错误 以下是日期代码:在Python新闻API中添加新闻和日期,python,Python,我是一名新的python开发人员。我一直试图把日期放在新闻旁边,这样标题和日期就可以在一起了,但我总是出错。当我删除日期时,它工作正常,但当我尝试放置日期时,它显示错误 以下是日期代码: # fetching data in json format open_news = requests.get(main_url).json() # getting all articles in a string article article = open_news[&q
# fetching data in json format
open_news = requests.get(main_url).json()
# getting all articles in a string article
article = open_news["articles"]
# empty list which will
# contain all trending news
results = []
for ar, dt in article:
results.append(ar["title"], dt["publishedAt"])
for i in range(len(results)):
# printing all trending news
print(i + 1, results[i])
# Driver Code
if __name__ == '__main__':
# function call
nigeriaNews()
我相信错误来自这里:results.appender[title],dt[publishedAt]
当我试图获得这样的标题时,对于文章中的ar:
结果:appendar[标题]它工作正常。同样的道理也适用于日期。但要同时获得这两个目标一直是个问题
我只想把标题和日期放在一起,比如:
标题1--日期
headline2---dateappend方法仅获取单个项目并将其附加到列表中。我认为有两种方法可以实现您的目标:
方法1:
for ar, dt in article:
results.append(' ------ '.join(ar["title"], dt["publishedAt"]))
for i in range(len(results)):
# printing all trending news
print(i + 1, results[i])
这将把标题和日期合并成一个字符串,然后将该字符串附加到列表中
方法2:
for ar, dt in article:
results.append((ar["title"], dt["publishedAt"]))
for i in range(len(results)):
# printing all trending news
print(i + 1, results[i][0], '-----', results[i][1])
这会将标题和日期的元组附加到列表中,然后打印功能会将元组中的两个元素分隔开来,并用它打印分隔符字符串。您遇到的问题是,您试图将多个项目添加到数组行中。为了解决这个问题,您可以添加json,例如:results.append{title:ar[title],publishedAt:dt[publishedAt]}。尽管更干净的方法是将数据存储在模型中,可以作为类或命名元组 此外,在获取数据时,应始终使用raise_for_status检查第三方服务器是否存在4xx和5xx错误 出于说明目的,以下是如何使用命名元组:
from collections import namedtuple
Article = namedtuple('Article', ['title', 'publishedAt']) # Model to store the article.
def FormatArticle(articleJson):
return Article(articleJson['title'], articleJson["publishedAt"])
# fetching data in json format
response = requests.get(main_url)
# You could log the response.text() and response.status_code()
response.raise_for_status() # This will throw an exception if status is 4xx or 5xx
open_news = response.json()
results = [FormatArticle(article) for article in open_news["articles"]]
#print(results) # You might also be able to do print([x._asdict() for x in results])
for x in results:
print(f'title: {x.title} - published at: {x.publishedAt}')
# Driver Code
if __name__ == '__main__':
# function call
nigeriaNews()
append方法将单个项添加到列表的末尾。 语法:list.appenditem 项可以是数字、字符串、字典、其他列表等
results = []
for ar, dt in article:
results.append([ar["title"]], dt["publishedAt"]]) # adding list item in to results.
for index, data in enumerate(results): # enumerate returns index and data from a sequence.
print(index+1, data[0], '------', data[1]) # print every article title, publish date with index.
要了解有关enumerate的更多信息,请参阅此如果您解释了您提供的代码如何回答问题,这将是一个更好的答案。好的,谢谢您的建议。我尽可能多地添加了评论、链接和文本。我希望这会更有价值。