You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数内F-string使用\n无法显示换行的问题

问题原因及解决办法

你的代码里有两个核心问题导致\n没生效:

  1. 直接打印列表时,Python会输出字符串的字面表示,也就是把\n显示成字符本身,不会解析成换行;
  2. 你的f-string格式错误,把\n放在了多余的双引号内部,让它变成了字符串的一部分,而非换行指令;另外article["source"]是字典,直接打印会输出整个字典结构,不是你要的来源名称。

修正后的代码(推荐方案)

import requests

def get_news(topic, from_date, to_date, language="en", api_key="c0c867e37d3f4fd09af31a177ff6472b"):
    url = f'https://newsapi.org/v2/everything?qInTitle={topic}&from={from_date}&to={to_date}&sortBy=popularity&language={language}&apiKey={api_key}'
    r = requests.get(url)
    content = r.json()
    articles = content["articles"]
    results = []
    for article in articles:
        # 去掉多余引号,让\n直接作为换行符生效,同时取source的name字段
        results.append(f"TITLE:\n{article['title']}\nSOURCE:\n{article['source']['name']}")
    return results

# 遍历列表逐个打印,每个新闻间加分隔线
news_list = get_news(topic="stock", from_date="2023-5-27", to_date="2023-5-29")
for news in news_list:
    print(news)
    print("-" * 50)

关键调整说明

  • 删掉f-string里多余的双引号,让\n直接成为换行控制符;
  • 遍历返回的列表逐个打印,避免直接打印列表导致转义字符失效;
  • 提取article["source"]["name"]获取来源名称,替代原代码中直接打印字典的操作。

另一种方案:返回整合后的大字符串

如果希望直接返回带格式的完整字符串,可修改return部分:

# 替换原函数的return语句
return "\n" + "-"*50 + "\n".join(results)

之后直接print(get_news(...))就能看到正确的换行效果。

内容的提问来源于stack exchange,提问作者Nas Ah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:22:20