- Python 基础
- Python - 首页
- Python - 概述
- Python - 历史
- Python - 特性
- Python vs C++
- Python - Hello World 程序
- Python - 应用领域
- Python - 解释器
- Python - 环境搭建
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 字面量
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 位运算符
- Python - 成员运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if else
- Python - 嵌套 if
- Python - Match-Case 语句
- Python - 循环
- Python - for 循环
- Python - for-else 循环
- Python - while 循环
- Python - break 语句
- Python - continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数 & 模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 可变参数
- Python - 变量作用域
- Python - 函数注解
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 字符串切片
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表元素
- Python - 修改列表元素
- Python - 添加列表元素
- Python - 删除列表元素
- Python - 循环遍历列表
- Python - 列表推导式
- Python - 对列表排序
- Python - 复制列表
- Python - 合并列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组
- Python - 访问元组元素
- Python - 更新元组
- Python - 解包元组
- Python - 循环遍历元组
- Python - 合并元组
- Python - 元组方法
- Python - 元组练习
- Python 集合
- Python - 集合
- Python - 访问集合元素
- Python - 添加集合元素
- Python - 删除集合元素
- Python - 循环遍历集合
- Python - 合并集合
- Python - 复制集合
- Python - 集合运算符
- Python - 集合方法
- Python - 集合练习
- Python 字典
- Python - 字典
- Python - 访问字典元素
- Python - 修改字典元素
- Python - 添加字典元素
- Python - 删除字典元素
- Python - 字典视图对象
- Python - 循环遍历字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组元素
- Python - 添加数组元素
- Python - 删除数组元素
- Python - 循环遍历数组
- Python - 复制数组
- Python - 反转数组
- Python - 对数组排序
- Python - 合并数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python - OS 文件/目录方法
- Python - OS 路径方法
- 面向对象编程
- Python - OOPs 概念
- Python - 类 & 对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态
- Python - 方法重写
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误 & 异常
- Python - 语法错误
- Python - 异常
- Python - try-except 块
- Python - try-finally 块
- Python - 抛出异常
- Python - 异常链
- Python - 嵌套 try 块
- Python - 用户自定义异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 连接线程
- Python - 线程命名
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护线程
- Python - 线程同步
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络编程
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 库
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 杂项
- Python - 日期 & 时间
- Python - 数学
- Python - 迭代器
- Python - 生成器
- Python - 闭包
- Python - 装饰器
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式化
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送邮件
- Python - 扩展
- Python - 工具/实用程序
- Python - GUIs
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用元类进行元编程
- Python - 模拟和存根
- Python - 猴子补丁
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
- Python 有用资源
- Python - 问答
- Python - 在线测验
- Python - 快速指南
- Python - 参考
- Python - 速查表
- Python - 项目
- Python - 有用资源
- Python - 讨论
- Python 编译器
- NumPy 编译器
- Matplotlib 编译器
- SciPy 编译器
Python - 字符串
在 Python 中,字符串是 Unicode 字符 的不可变序列。每个字符根据 Unicode 标准都有一个唯一的 数值。但是,整个序列即使所有字符都是数字,也没有任何数值。为了区分字符串与数字和其他标识符,字符序列在其字面表示中包含在单引号、双引号或三引号内。因此,1234 是一个数字(整数),但 '1234' 是一个字符串。
创建 Python 字符串
只要包含相同的字符序列,单引号、双引号或三引号就没有区别。因此,以下字符串表示是等效的。
示例
>>> 'Welcome To TutorialsPoint' 'Welcome To TutorialsPoint' >>> "Welcome To TutorialsPoint" 'Welcome To TutorialsPoint' >>> '''Welcome To TutorialsPoint''' 'Welcome To TutorialsPoint' >>> """Welcome To TutorialsPoint""" 'Welcome To TutorialsPoint'
查看以上语句,可以清楚地看到,Python 内部将字符串存储为包含在单引号中。
在旧版本中,字符串在内部存储为 8 位 ASCII,因此需要附加 'u' 以使其成为 Unicode。从 Python 3 开始,所有字符串都以 Unicode 表示。因此,现在不再需要在字符串后添加 'u'。
访问字符串中的值
Python 不支持字符类型;这些被视为长度为 1 的字符串,因此也被视为子字符串。
要访问子字符串,请使用方括号进行切片,并使用索引或索引来获取子字符串。例如 -
var1 = 'Hello World!' var2 = "Python Programming" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5])
当以上代码执行时,会产生以下结果 -
var1[0]: H var2[1:5]: ytho
更新字符串
您可以通过将变量(重新)分配给另一个字符串来“更新”现有字符串。新值可以与其先前值相关,也可以是完全不同的字符串。例如 -
var1 = 'Hello World!' print ("Updated String :- ", var1[:6] + 'Python')
当以上代码执行时,会产生以下结果 -
Updated String :- Hello Python
访问我们的 Python - 修改字符串 教程,以了解有关更新/修改字符串的更多信息。
转义字符
下表列出了可以使用反斜杠表示法表示的转义或不可打印字符。
一个 转义字符 会被解释;在单引号和双引号字符串中。
反斜杠表示法 | 十六进制字符 | 描述 |
---|---|---|
\a | 0x07 | 响铃或警报 |
\b | 0x08 | 退格键 |
\cx | Ctrl-x | |
\C-x | Ctrl-x | |
\e | 0x1b | Escape(转义) |
\f | 0x0c | 换页 |
\M-\C-x | Meta-Ctrl-x | |
\n | 0x0a | 换行 |
\nnn | 八进制表示法,其中n的范围是0到7 | |
\r | 0x0d | 回车 |
\s | 0x20 | 空格 |
\t | 0x09 | Tab(制表符) |
\v | 0x0b | 垂直制表符 |
\x | 字符x | |
\xnn | 十六进制表示法,其中n的范围是0到9、a到f或A到F |
字符串特殊运算符
假设字符串变量a存储'Hello',变量b存储'Python',则:
运算符 | 描述 | 示例 |
---|---|---|
+ | 连接 - 将运算符两侧的值连接起来 | a + b 将得到HelloPython |
* | 重复 - 创建新的字符串,连接多个相同字符串的副本 | a*2 将得到-HelloHello |
[] | 切片 - 获取给定索引处的字符 | a[1] 将得到e |
[ : ] | 范围切片 - 获取给定范围内的字符 | a[1:4] 将得到ell |
in | 成员关系 - 如果字符存在于给定字符串中,则返回True | H in a 将得到1 |
not in | 成员关系 - 如果字符不存在于给定字符串中,则返回True | M not in a 将得到1 |
r/R | 原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串完全相同,除了原始字符串运算符“r”,它位于引号之前。“r”可以是小写(r)或大写(R),并且必须放置在第一个引号标记的正前方。 | print r'\n' 输出 \n,print R'\n' 输出 \n |
% | 格式化 - 执行字符串格式化 | 参见下一节 |
字符串格式化运算符
Python 最酷的功能之一是字符串格式化运算符 %。此运算符是字符串独有的,弥补了缺少 C 的 printf() 系列函数的不足。下面是一个简单的示例:
print ("My name is %s and weight is %d kg!" % ('Zara', 21))
当以上代码执行时,会产生以下结果 -
My name is Zara and weight is 21 kg!
以下是可与 % 一起使用的完整符号列表:
序号 | 格式符号 & 转换 |
---|---|
1 | %c 字符 |
2 | %s 在格式化之前通过 str() 进行字符串转换 |
3 | %i 带符号十进制整数 |
4 | %d 带符号十进制整数 |
5 | %u 无符号十进制整数 |
6 | %o 八进制整数 |
7 | %x 十六进制整数(小写字母) |
8 | %X 十六进制整数(大写字母) |
9 | %e 指数表示法(带小写“e”) |
10 | %E 指数表示法(带大写“E”) |
11 | %f 浮点实数 |
12 | %g %f 和 %e 中较短者 |
13 | %G %f 和 %E 中较短者 |
其他支持的符号和功能列在以下表格中:
序号 | 符号 & 功能 |
---|---|
1 | * 参数指定宽度或精度 |
2 | - 左对齐 |
3 | + 显示符号 |
4 | <sp> 在正数前留一个空格 |
5 | # 添加八进制前导零('0')或十六进制前导'0x'或'0X',具体取决于是否使用了'x'或'X'。 |
6 | 0 用零(而不是空格)从左侧填充 |
7 | % '%%' 将为您提供单个文字'%' |
8 | (var) 映射变量(字典参数) |
9 | m.n. m 是最小总宽度,n 是显示小数点后数字的位数(如果适用)。 |
访问我们的 Python - 字符串格式化 教程,了解各种格式化字符串的方法。
Python 字符串中的双引号
如果要将某些文本作为字符串的一部分嵌入双引号中,则字符串本身应放在单引号中。要嵌入单引号文本,字符串应写成双引号。
示例
var = 'Welcome to "Python Tutorial" from TutorialsPoint' print ("var:", var) var = "Welcome to 'Python Tutorial' from TutorialsPoint" print ("var:", var)
这将产生以下输出:
var: Welcome to "Python Tutorial" from TutorialsPoint var: Welcome to 'Python Tutorial' from TutorialsPoint
三引号
要形成一个带有三引号的字符串,可以使用三个单引号或三个双引号 - 两个版本相似。
示例
var = '''Welcome to TutorialsPoint''' print ("var:", var) var = """Welcome to TutorialsPoint""" print ("var:", var)
这将产生以下输出:
var: Welcome to TutorialsPoint var: Welcome to TutorialsPoint
Python 多行字符串
三引号字符串可用于形成多行字符串。
示例
var = ''' Welcome To Python Tutorial from TutorialsPoint ''' print ("var:", var)
这将产生以下输出:
var: Welcome To Python Tutorial from TutorialsPoint
字符串的算术运算符
字符串是非数值数据类型。显然,我们不能对字符串操作数使用算术运算符。在这种情况下,Python 会引发 TypeError。
print ("Hello"-"World")
执行上述程序时,将生成以下错误:
>>> "Hello"-"World" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'str' and 'str'
获取 Python 字符串的类型
Python 中的字符串是 str 类的对象。可以使用 type() 函数进行验证。
示例
var = "Welcome To TutorialsPoint" print (type(var))
这将产生以下输出:
<class 'str'>
内置字符串方法
Python 包含以下内置方法来操作字符串:
序号 | 方法及描述 |
---|---|
1 | capitalize()
将字符串的首字母大写。 |
2 | casefold()
将字符串中的所有大写字母转换为小写。类似于 lower(),但也可以处理 UNICODE 字符。 |
3 | center(width, fillchar)
返回一个用空格填充的字符串,其中原始字符串居中到总共 width 列。 |
4 | count(str, beg= 0,end=len(string))
计算 str 在字符串中出现的次数,如果给定起始索引 beg 和结束索引 end,则计算其在字符串的子字符串中出现的次数。 |
5 | decode(encoding='UTF-8',errors='strict')
使用为 encoding 注册的编解码器解码字符串。encoding 默认为默认字符串编码。 |
6 | encode(encoding='UTF-8',errors='strict')
返回字符串的编码字符串版本;如果出错,默认情况下会引发 ValueError,除非 errors 与 'ignore' 或 'replace' 一起给出。 |
7 | endswith(suffix, beg=0, end=len(string))
确定字符串或字符串的子字符串(如果给定起始索引 beg 和结束索引 end)是否以 suffix 结尾;如果这样,则返回 true,否则返回 false。 |
8 | expandtabs(tabsize=8)
将字符串中的制表符扩展为多个空格;如果未提供 tabsize,则默认为每个制表符 8 个空格。 |
9 | find(str, beg=0 end=len(string))
确定 str 是否出现在字符串中或字符串的子字符串中(如果给定起始索引 beg 和结束索引 end),如果找到则返回索引,否则返回 -1。 |
10 | format(*args, **kwargs)
此方法用于格式化当前字符串值。 |
11 | format_map(mapping)
此方法也用于格式化当前字符串,唯一的区别是它使用映射对象。 |
12 | index(str, beg=0, end=len(string))
与 find() 相同,但如果未找到 str 则引发异常。 |
13 | isalnum()
如果字符串至少包含 1 个字符,并且所有字符都是字母数字字符,则返回 true,否则返回 false。 |
14 | isalpha()
如果字符串至少包含 1 个字符,并且所有字符都是字母字符,则返回 true,否则返回 false。 |
15 | isascii()
如果字符串中的所有字符都来自 ASCII 字符集,则返回 True。 |
16 | isdecimal()
如果 Unicode 字符串仅包含十进制字符,则返回 true,否则返回 false。 |
17 | isdigit()
如果字符串仅包含数字,则返回 true,否则返回 false。 |
18 | isidentifier()
检查字符串是否为有效的 Python 标识符。 |
19 | islower()
如果字符串至少包含 1 个大小写字符,并且所有大小写字符都为小写,则返回 true,否则返回 false。 |
20 | isnumeric()
如果 Unicode 字符串仅包含数字字符,则返回 true,否则返回 false。 |
21 | isprintable()
检查字符串中的所有字符是否都可打印。 |
22 | isspace()
如果字符串仅包含空白字符,则返回 true,否则返回 false。 |
23 | istitle()
如果字符串已正确“标题化”,则返回 true,否则返回 false。 |
24 | isupper()
如果字符串至少包含一个大小写字符,并且所有大小写字符都为大写,则返回 true,否则返回 false。 |
25 | join(seq)
将序列 seq 中元素的字符串表示形式合并(连接)到一个字符串中,并使用分隔符字符串。 |
26 | ljust(width[, fillchar])
返回一个用空格填充的字符串,其中原始字符串左对齐到总共 width 列。 |
27 | lower()
将字符串中的所有大写字母转换为小写。 |
28 | lstrip()
删除字符串中所有前导空白。 |
29 | maketrans()
返回一个要在 translate 函数中使用的转换表。 |
30 | partition()
在分隔符第一次出现的位置将字符串拆分为三个字符串元组。 |
31 | removeprefix()
删除前缀字符串后返回字符串。 |
32 | removesuffix()
删除后缀字符串后返回字符串。 |
33 | replace(old, new [, max]) 将字符串中所有出现的 old 替换为 new,或者如果给定 max,则最多替换 max 次出现。 |
34 | rfind(str, beg=0,end=len(string))
与 find() 相同,但在字符串中向后搜索。 |
35 | rindex( str, beg=0, end=len(string))
与 index() 相同,但在字符串中向后搜索。 |
36 | rjust(width,[, fillchar])
返回一个用空格填充的字符串,其中原始字符串右对齐到总共 width 列。 |
37 | rpartition()
在分隔符最后一次出现的位置将字符串拆分为三个字符串元组。 |
38 | rsplit()
从末尾拆分字符串并返回子字符串列表。 |
39 | rstrip()
删除字符串的所有尾随空白。 |
40 | split(str="", num=string.count(str))
根据分隔符 str(如果未提供则为空格)拆分字符串,并返回子字符串列表;如果给定,则最多拆分为 num 个子字符串。 |
41 | splitlines( num=string.count('\n'))
在所有(或 num)换行符处拆分字符串,并返回每个行的列表,其中已删除换行符。 |
42 | startswith(str, beg=0,end=len(string))
确定字符串或字符串的子字符串(如果给定起始索引 beg 和结束索引 end)是否以子字符串 str 开头;如果这样,则返回 true,否则返回 false。 |
43 | strip([chars])
对字符串执行 lstrip() 和 rstrip()。 |
44 | swapcase()
反转字符串中所有字母的大小写。 |
45 | title()
返回字符串的“标题化”版本,即所有单词都以大写字母开头,其余为小写。 |
46 | translate(table, deletechars="")
根据转换表 str(256 个字符)转换字符串,删除 del 字符串中的那些字符。 |
47 | upper()
将字符串中的小写字母转换为大写。 |
48 | zfill (width)
返回用零从左侧填充到总共 width 个字符的原始字符串;用于数字,zfill() 保留给定的任何符号(减去一个零)。 |
字符串的内置函数
以下是我们可以与字符串一起使用的内置函数: