pin_drop当前位置:知识文库 ❯ 图文

Python字符串类型详解

概述

字符串(String)是Python中表示文本数据的基本类型,由零个或多个字符组成的有序序列。在Python 3中,字符串默认使用Unicode编码,可以表示世界上几乎所有的文字和符号。字符串是不可变(immutable)对象,一旦创建就不能修改其内容。字符串在数据处理、文本分析、Web开发等领域无处不在,是Python编程中使用最频繁的数据类型之一。


字符串定义

单引号

代码示例

s1 = 'Hello, Python!'
print(s1)
print(type(s1))

输出:

代码示例

Hello, Python!
<class 'str'>

双引号

代码示例

s2 = "Hello, Python!"
print(s2)

输出:

代码示例

Hello, Python!

单引号和双引号在Python中完全等价,可以根据需要选择。当字符串中包含引号时,可以使用另一种引号来避免转义:

代码示例

s1 = "It's a beautiful day"
s2 = 'He said "Hello"'

三引号

三引号(三个单引号或三个双引号)用于定义多行字符串:

代码示例

s1 = '''这是第一行
这是第二行
这是第三行'''

s2 = """这也是
多行
字符串"""

print(s1)
print("---")
print(s2)

输出:

代码示例

这是第一行
这是第二行
这是第三行
---
这也是
多行
字符串

三引号字符串会保留所有换行符和缩进,常用于:

  • 多行文本

  • 文档字符串(docstring)

  • 包含单引号和双引号的文本


原始字符串

原始字符串(Raw String)以rR开头,其中的反斜杠不会被视为转义字符:

代码示例

normal = "C:\\new\\test"
raw = r"C:\new\test"

print(normal)
print(raw)

输出:

代码示例

C:
ew\test
C:\new\test

原始字符串的用途

原始字符串在正则表达式和文件路径中特别有用:

代码示例

import re

pattern = r"\\d+\\.\\d+"
text = "The price is 3.14"
result = re.search(pattern, text)
print(result.group())

输出:

代码示例

3.14

提示:原始字符串不能以奇数个反斜杠结尾,因为最后一个反斜杠会转义结尾的引号。r"hello\\"是语法错误。


转义字符

转义字符以反斜杠\开头,用于表示一些特殊字符:

转义字符 含义 示例 输出
\\ 反斜杠 print("\\") \
\\' 单引号 print('\\'') '
\\" 双引号 print('\\"') "
\n 换行 print("A\nB") A换行B
\t 水平制表符 print("A\tB") A    B
\r 回车 print("A\rB") B
\b 退格 print("A\bB") B
\u4e2d Unicode字符 print("\u4e2d")

转义字符示例

代码示例

print("姓名\t年龄\t城市")
print("张三\t25\t北京")
print("---")
print("第一行\n第二行\n第三行")
print("---")
print("路径: C:\\Users\\test")

输出:

代码示例

姓名    年龄    城市
张三    25      北京
---
第一行
第二行
第三行
---
路径: C:\Users\test

字符串不可变性

字符串是不可变对象,一旦创建就不能修改其中的任何字符:

代码示例

s = "hello"
# s[0] = "H"  # TypeError: 'str' object does not support item assignment

如果需要修改字符串,必须创建一个新的字符串:

代码示例

s = "hello"
s = "H" + s[1:]
print(s)

输出:

代码示例

Hello

不可变性的影响

代码示例

a = "hello"
b = "hello"
print(a is b)

a = "hello world"
print(a)
print(b)

输出:

代码示例

True
hello world
hello

提示:字符串不可变意味着:对字符串的任何"修改"操作实际上都是创建了一个新字符串。这在频繁修改字符串时可能产生性能问题,此时可以考虑使用列表来构建,最后用''.join()合并。


代码示例

示例1:字符串定义方式对比

代码示例

s1 = '单引号字符串'
s2 = "双引号字符串"
s3 = '''三引号
可以
换行'''
s4 = r"原始字符串\n不转义"

print(f"s1: {s1}")
print(f"s2: {s2}")
print(f"s3: {s3}")
print(f"s4: {s4}")

输出:

代码示例

s1: 单引号字符串
s2: 双引号字符串
s3: 三引号
可以
换行
s4: 原始字符串\n不转义

示例2:字符串与Unicode

代码示例

chinese = "你好,世界"
emoji = "[笑脸][庆祝]"

print(chinese)
print(emoji)
print(len(chinese))
print(len(emoji))

输出:

代码示例

你好,世界
[笑脸][庆祝]
5
2

提示:Python 3字符串原生支持Unicode,可以自由使用中文、日文、Emoji等各种字符。注意len()返回的是字符数,不是字节数。


注意事项

提示

  • 单引号和双引号在Python中完全等价,选择哪种取决于个人偏好和字符串内容。

  • 三引号字符串会保留所有空白字符(换行、缩进等),注意可能引入多余的空格。

  • 原始字符串不能以奇数个反斜杠结尾。

  • 字符串是不可变对象,"修改"操作实际上是创建新字符串。

  • Python 3字符串是Unicode字符串,len()返回字符数而非字节数。

  • 空字符串""''都是合法的,其布尔值为False

  • 字符串拼接时,使用+运算符或join()方法,后者在大量拼接时性能更好。


小结

本节介绍了Python字符串类型的核心知识:

  • 字符串可以使用单引号、双引号或三引号定义

  • 三引号用于多行字符串,会保留换行和缩进

  • 原始字符串r""中的反斜杠不转义,常用于正则和路径

  • 转义字符用于表示特殊字符,如\n换行、\t制表符等

  • 字符串是不可变对象,修改操作会创建新字符串

  • Python 3字符串原生支持Unicode


练习题

练习1

编写一个程序,使用三引号定义一首古诗(至少4行),并输出该古诗及其总字符数(不含换行符)。

提示:使用replace()方法去除换行符后再用len()计算字符数。

练习2

编写一个程序,分别用普通字符串和原始字符串表示正则表达式模式\d{3}-\d{4},并打印两者,观察区别。

提示:普通字符串中\\d表示\d,原始字符串中直接写\d

常见问题

Python中单引号和双引号有什么区别?

在Python中,单引号和双引号完全等价,没有任何功能差异。选择哪种主要取决于字符串内容和个人偏好。当字符串中包含单引号时可以使用双引号包裹,反之亦然,这样可以避免使用转义字符。

为什么字符串是不可变的?这有什么好处?

字符串不可变性使得字符串可以被安全地共享和缓存(字符串驻留),相同的字符串值在内存中只存储一份。这提高了内存效率,也使字符串可以作为字典的键。不可变对象天生是线程安全的。

什么时候使用原始字符串?

原始字符串主要用于两个场景:正则表达式(避免大量转义反斜杠)和Windows文件路径(如r"C:\Users\name")。使用原始字符串可以让代码更清晰,减少转义字符带来的混淆。

大量字符串拼接时如何提高性能?

由于字符串不可变,使用+运算符拼接会产生大量中间对象。大量拼接时应使用列表收集各部分,最后用''.join()一次性合并;或使用io.StringIO;或使用f-string格式化,这三种方式性能远优于反复使用+号拼接。

标签: 字符串类型 原始字符串 转义字符 字符串不可变 Unicode 三引号 Python基础

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python布尔类型详解 下一篇: Python类型转换详解

poll相关推荐

作者头像 智能小晨 python

Python类型转换详解

发布日期 2026-05-27
全面掌握Python类型转换的核心知识,包括int float str bool等内置函数的用法、隐式转换规则、容器类型之间的转换方法,以及使用try-except安全处理转换异常的实战技巧。通过丰富的代码示例,帮助你写出更健壮的Python代码。
作者头像 智能小晨 python

Python布尔类型详解

发布日期 2026-05-27
深入解析Python布尔类型的核心知识,包括True和False的定义、and or not逻辑运算、短路求值特性、bool()函数用法以及隐式布尔转换规则。通过丰富的代码示例,帮助你掌握Python布尔类型的实际应用,写出更优雅的条件判断代码。
作者头像 智能小晨 python

Python复数类型complex详解

发布日期 2026-05-27
全面介绍Python复数类型complex的使用方法,包括复数定义、实部虚部访问、算术运算、cmath模块函数以及极坐标转换。掌握复数在科学计算和工程领域的应用。
作者头像 智能小晨 python

Python浮点数float详解

发布日期 2026-05-27
深入讲解Python浮点数float类型的核心概念,包括IEEE 754标准、浮点数精度问题、decimal精确计算模块和math数学函数。帮助你理解0.1+0.2≠0.3的原因并掌握解决方案。