跳到主要内容

Python中使用三引号多行字符串

最后更新于:

如何在 Python 中使用三引号多行字符串?

Python 里,三引号 ''' / """ 是原生支持的多行字符串语法,专门用来写跨越多行、包含换行/引号/特殊字符的文本,完全不会报错,这也是你刚才在 Shell 里报错的核心原因:Shell 没有三引号,Python 才有

下面从头讲清楚用法,还结合你刚才的 Linux 命令场景举例。


一、基础语法

Python 有两种三引号,功能完全一样:

  • 单三引号:'''多行内容'''
  • 双三引号:"""多行内容"""

核心特性

  1. 直接换行,不需要写 \n
  2. 自动保留换行、空格、缩进
  3. 字符串内部可以直接写 '"不用转义

二、最简单的多行字符串

 1# 双三引号
 2s1 = """第一行
 3第二行
 4第三行
 5    带缩进的行"""
 6
 7# 单三引号
 8s2 = '''Hello
 9World
10Python'''
11
12print(s1)
13print(s2)

运行后会原样输出换行和缩进


三、内部包含引号,无需转义

这是三引号最大的优势:

 1# 字符串里有双引号,用三引号包裹,不用 \ 转义
 2msg = """他说:"Python 三引号超好用" """
 3
 4# 字符串里有单引号
 5sql = '''SELECT * FROM user WHERE name='test' '''
 6
 7
 8# 打印
 9print(msg)
10print(sql)

四、结合 f-string 嵌入变量(对应你之前的 name=test

f-三引号 可以直接在多行字符串里插变量,完美对应你刚才的 Linux 命令场景:

1name = "test"
2
3# 多行 Linux 命令,直接嵌入变量
4cmd = f"""
5echo "Hello {name}"
6ls * | wc -l
7"""
8
9print(cmd)

输出(完全保留格式+变量替换):

1echo "Hello test"
2ls * | wc -l

五、存放多行 Linux / SQL 命令(最常用场景)

这正是你一开始想实现的效果,Python 里完全没问题

 1# 存放多条 Linux 命令
 2linux_cmd = """
 3cd /root
 4ls -l
 5cat test.txt
 6echo "done"
 7"""
 8
 9# 存放多行 SQL
10sql = """
11SELECT id, name
12FROM user
13WHERE age > 18
14ORDER BY id DESC
15"""
16
17# 打印
18print(linux_cmd)
19print(sql)

输出:

 1cd /root    
 2ls -l       
 3cat test.txt
 4echo "done" 
 5
 6
 7SELECT id, name 
 8FROM user       
 9WHERE age > 18  
10ORDER BY id DESC

六、用作文档字符串(docstring)

三引号最经典的用途:给函数/类写注释

1def add(a, b):
2    """
3    计算两个数的和
4    参数:a, b 数字
5    返回:和
6    """
7    return a + b

七、小技巧:去掉首尾多余空行

三引号开头/结尾容易多一个空行,用 .strip() 清理:

1name = "test"
2cmd = f"""
3echo "Hello {name}"
4ls * | wc -l
5""".strip()
6
7print(cmd)

输出就没有首尾空行了:

1echo "Hello test"
2ls * | wc -l
  • 三引号开头/结尾容易多一个空行

  • 三引号开头/结尾容易多一个空行(去除空行)

总结

  1. Python 原生支持 ''' / """ 三引号,Shell 不支持
  2. 用来写多行文本、带引号内容、Linux/SQL 命令最方便
  3. 配合 f"""...""" 可以直接嵌入变量
  4. 自动保留换行和格式,不用手动写 \n

结束。

最新文章