You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何多行编写f-string且避免引入意外空白与缩进残留

解决f-string换行缩进但不保留输出缩进的问题

嘿,这个问题我太懂了——写代码的时候总想让格式整洁,但又不想影响输出结果!给你几个实用的解决办法:

方法1:用括号拼接多个f-string片段

这是我最常用的方式,既可以缩进让代码结构清晰,又不会把缩进带到输出里:

name1 = "Nadya"
name2 = "Jim"
def print_string():
    string = (
        f"{name1}\n"
        f"{name2}"
    )
    print(string)
print_string()

Python会自动把括号内的多个字符串拼接成一个,每个f-string片段可以独立缩进,输出结果和你想要的完全一致:

Nadya
Jim

方法2:使用textwrap.dedent处理多行文本

如果你的字符串内容更长,用textwrap模块的dedent方法可以自动去除所有行的共同前导空白,非常省心:

import textwrap

name1 = "Nadya"
name2 = "Jim"
def print_string():
    # 开头的反斜杠是为了去掉三引号开头的空行
    string = textwrap.dedent(f"""\
        {name1}
        {name2}
    """)
    print(string)
print_string()

这个方法的好处是你可以像写普通多行文本那样排版代码,dedent会帮你把多余的缩进去掉,输出同样是干净的两行内容。

方法3:利用字符串的join方法(适合批量内容)

如果你的内容是从列表或其他可迭代对象来的,用join更灵活:

name1 = "Nadya"
name2 = "Jim"
def print_string():
    string = "\n".join([f"{name1}", f"{name2}"])
    print(string)
print_string()

这种方式不需要手动写多个\n,尤其当你有大量变量需要拼接成多行字符串时,会更简洁。

内容的提问来源于stack exchange,提问作者Kurt Peek

火山引擎 最新活动