Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python新闻API中添加新闻和日期_Python - Fatal编程技术网

在Python新闻API中添加新闻和日期

在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

我是一名新的python开发人员。我一直试图把日期放在新闻旁边,这样标题和日期就可以在一起了,但我总是出错。当我删除日期时,它工作正常,但当我尝试放置日期时,它显示错误

以下是日期代码:


    # 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---date

append方法仅获取单个项目并将其附加到列表中。我认为有两种方法可以实现您的目标:

方法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的更多信息,请参阅此

如果您解释了您提供的代码如何回答问题,这将是一个更好的答案。好的,谢谢您的建议。我尽可能多地添加了评论、链接和文本。我希望这会更有价值。