如何在 Python 中编写多行字符串(三引号和连接)

了解在 Python 中编写多行字符串的最佳方法。探索三引号、括号串联、换行连接方法和格式控件。

在编辑器中尝试此解决方案

概述

在应用程序中编写文本块(例如 SQL 查询、HTML 模板、CLI 指令或冗长的调试消息)时,您通常需要将字符串值跨多行。 Python 提供了多种定义多行字符串的方法,每种方法都有不同的格式含义。

编写多行字符串最直接、最常见的方法是使用三引号语法(`'''` 或 `"""`)。三引号字符串按字面保留所有字符输入,包括原始换行符和缩进。这使得格式化高度可视化,但有一个缺点:用于对齐嵌套循环或类内的代码的任何前导制表符或空格都将成为实际字符串值的一部分。

要定义在视觉上跨越源代码中的多行但编译为单个长行(或不捕获代码缩进空格)的多行字符串,您可以将标准单引号字符串括在括号中。 Python 会自动将括号内的相邻字符串文字连接起来,使您的代码干净且具有高度可读性。

代码和执行输出

此脚本演示如何使用三引号、括号字符串连接和简洁缩进编写多行文本。

multiline_strings.py
在编辑器中尝试
# 1. Triple Quote Syntax (preserves all newlines and indentation)
sql_query = """SELECT id, username, email
FROM users
WHERE active = True
ORDER BY id DESC;"""

print("--- Triple Quotes Query ---")
print(sql_query)

# 2. Parentheses Concatenation (splits code line, compiles into single line)
long_message = (
    "This is a long message that we split "
    "across multiple lines in our editor, "
    "but it compiles into a single text block."
)
print("\n--- Parentheses Concatenation ---")
print(long_message)

# 3. Joining list elements for clean line breaks
lines = [
    "First instruction line.",
    "Second instruction line.",
    "Third instruction line."
]
joined_text = "\n".join(lines)
print("\n--- Joined Lines ---")
print(joined_text)
端子输出
--- Triple Quotes Query ---
SELECT id, username, email
FROM users
WHERE active = True
ORDER BY id DESC;

--- Parentheses Concatenation ---
This is a long message that we split across multiple lines in our editor, but it compiles into a single text block.

--- Joined Lines ---
First instruction line.
Second instruction line.
Third instruction line.

逐步实施

  • 使用三引号(''' 或 """)编写保留文字换行符的长文本块。
  • 将连续的字符串括在不带逗号的括号 ( ) 中,以直观地分割代码,而不在输出中添加换行符。
  • 在类或函数内使用三引号来清理前导缩进时,请使用 textwrap.dedent() 。

常见问题解答

如何从嵌套的三引号字符串中删除前导缩进?

导入内置的 textwrap 模块并将字符串传递给 textwrap.dedent(text) 以清理前导空格。

单三引号和双三引号有什么区别?

''' 和 """ 之间没有功能差异。选择一种约定并在整个项目中始终坚持它。

相关主题

推荐的 Python 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。