当前位置: 首页 > news >正文

[Python编程] Python3 字符串

对于 Python 初学者而言,字符串是入门阶段最常用、也最基础的数据类型之一。无论是处理文本数据、用户输入,还是输出结果,都离不开字符串的操作。本文将基于 Python3 的特性,从字符串的创建、更新,到转义字符、运算符、特殊语法(三引号、格式化)及常用内建函数,系统梳理字符串的核心知识,帮助你快速掌握字符串的使用技巧。

一、Python3 字符串基础:是什么?怎么用?

字符串是 Python 中用于表示文本的数据类型,它由一系列字符组成,用单引号(' ') 或双引号(" ") 包裹即可创建。需要注意的是,Python 没有 “单字符类型”—— 哪怕是单个字符(如 'a'),在 Python 中也会被视为长度为 1 的字符串。

1️⃣字符串的创建

创建字符串的方式非常简单,只需为变量赋值即可,示例如下:

python

运行

# 用单引号创建字符串
var1 = 'Hello World!'
# 用双引号创建字符串(与单引号功能完全一致,可根据需求选择)
var2 = "Python Programming"
# 单个字符也是字符串
var3 = 'A'

2️⃣字符串的更新:截取与拼接

Python 字符串本身是 “不可变” 的(即无法直接修改字符串中的某个字符),但我们可以通过截取字符串的一部分,再与其他字符串拼接,实现 “更新” 效果。

核心逻辑:
  • 截取字符串:使用[索引][起始:结束](左闭右开原则,即包含起始索引,不包含结束索引)。
  • 拼接字符串:使用+运算符。
实例演示:

python

运行

# 原字符串
var1 = 'Hello World!'
# 截取前6个字符(索引0-5),拼接'Python!'
updated_var = var1[:6] + 'Python!'
print("已更新字符串:", updated_var)
# 运行结果:已更新字符串: Hello Python!

二、Python3 转义字符:处理特殊字符

当需要在字符串中插入无法直接输入的字符(如换行、制表符),或与引号冲突的字符(如单引号内的单引号)时,需要使用反斜杠(\) 开头的转义字符。

1️⃣常用转义字符表

转义字符描述示例输出结果
\(行尾)续行符(将一行代码拆分为多行)print("Hello \nWorld")(实际为换行,此处简化)Hello
World
\\表示一个反斜杠符号print("C:\\Users")C:\Users
\'表示一个单引号print('He said: \'Hi!\'')He said: 'Hi!'
\"表示一个双引号print("She said: \"Hello!\"")She said: "Hello!"
\n换行符print("Line1\nLine2")Line1
Line2
\t横向制表符(类似按 Tab 键)print("Name:\tAge")Name: Age
\b退格符(删除前一个字符)print("Hello\b World")Hello World(删除了 'Hello' 后的空格)
\f换页符(常用于打印机,终端中可能显示为分隔)print("Hello\fWorld")Hello
World(终端中可能分行显示)
\yyy八进制数表示的字符(y 为 0-7)print("\012")换行(\012 对应 ASCII 中的换行符)
\xyy十六进制数表示的字符(y 为 0-9/A-F)print("\x41")A(\x41 对应 ASCII 中的 'A')

2️⃣转义字符与进制转换实例

除了上述常用场景,转义字符还可结合进制转换(如 ASCII 码)使用,示例如下:

python

运行

# 1. 输出带双引号的字符串
print("Hello, world!\"")  # 输出:Hello, world!"# 2. 换行与制表符结合
print("Hello, world!\nHow are you?")  # 输出:Hello, world!(换行)How are you?
print("Hello, world!\tHow are you?")  # 输出:Hello, world!    How are you?# 3. ASCII码相关:ord()获取字符的ASCII值,\x表示十六进制
print("A对应的ASCII值为:", ord("A"))  # 输出:A对应的ASCII值为:65
print("\x41 是A的ASCII代码")  # 输出:A 是A的ASCII代码# 4. 十进制转二进制、八进制、十六进制(扩展实用技巧)
decimal_num = 42  # 十进制数
binary_num = bin(decimal_num)  # 转二进制
octal_num = oct(decimal_num)   # 转八进制
hex_num = hex(decimal_num)     # 转十六进制
print("二进制:", binary_num)  # 输出:二进制:0b101010
print("八进制:", octal_num)   # 输出:八进制:0o52
print("十六进制:", hex_num)   # 输出:十六进制:0x2a

三、Python3 字符串运算符:简化字符串操作

Python 提供了一系列专门用于字符串的运算符,能快速实现拼接、重复、截取、判断成员等功能。以下是常用运算符的详细说明(假设a = "Hello"b = "Python"):

运算符描述实例输出结果
+字符串连接(拼接)a + b"HelloPython"
*重复输出字符串a * 2"HelloHello"
[]通过索引获取单个字符(索引从 0 开始)a[1]"e"(a 的第 2 个字符)
[:]截取子字符串(左闭右开)a[1:4]"ell"(索引 1-3 的字符)
in成员运算符:判断字符是否在字符串中,是则返回 True'H' in aTrue
not in成员运算符:判断字符是否不在字符串中,是则返回 True'M' not in aTrue
r/R原始字符串:不解析转义字符,按字面意思输出print(r"\n")\n(不会换行)
%格式字符串(旧版格式化方式,下文会讲更优的 f-string)print("Hello %s" % b)"Hello Python"
实例演示:

python

运行

a = "Hello"
b = "Python"# 1. 拼接与重复
print("拼接:", a + b)          # 输出:拼接:HelloPython
print("重复:", a * 2)          # 输出:重复:HelloHello# 2. 索引与截取
print("a[1]:", a[1])          # 输出:a[1]:e
print("a[1:4]:", a[1:4])      # 输出:a[1:4]:ell# 3. 成员判断
print("'H'在a中?", 'H' in a)  # 输出:'H'在a中? True
print("'M'不在a中?", 'M' not in a)  # 输出:'M'不在a中? True# 4. 原始字符串
print("普通字符串:\n")         # 输出:(换行)
print("原始字符串:", r"\n")    # 输出:原始字符串:\n

四、Python3 三引号:处理多行与复杂字符串

当需要创建跨多行的字符串,或包含大量特殊字符(如换行、制表符、引号)时,使用三引号("""""" 或 '''''') 会非常便捷。它能让字符串保持 “所见即所得”(WYSIWYG)的格式,无需频繁使用转义字符。

1️⃣三引号的核心优势

  1. 支持多行字符串,直接保留换行和缩进。
  2. 可直接包含单引号、双引号,无需转义。
  3. 适合嵌入 HTML、SQL 等代码片段(避免繁琐的字符串拼接)。

2️⃣实例演示:

python

运行

# 用三引号创建多行字符串
para_str = """这是一个多行字符串的实例
多行字符串可以直接使用制表符\t(TAB键效果)
也可以直接包含换行符\n(但实际无需手动写,换行即可)
还能直接用单引号'和双引号",无需转义
"""
print(para_str)
运行结果:

plaintext

这是一个多行字符串的实例
多行字符串可以直接使用制表符    (TAB键效果)
也可以直接包含换行符
(但实际无需手动写,换行即可)
还能直接用单引号'和双引号",无需转义

五、Python3 字面量格式化字符串:优雅的字符串拼接

在需要将变量、表达式的结果嵌入字符串时,“格式化字符串” 是比+拼接更优雅的方式。Python3.6 + 推荐使用f-string(字面量格式化字符串),语法简洁且效率高。

1️⃣f-string 基础用法

  • 语法:以fF开头,字符串中用{}包裹变量或表达式,Python 会自动计算并替换{}内的内容。
  • 优势:无需手动转换数据类型,支持直接嵌入表达式。
实例演示:

python

运行

# 1. 嵌入变量
name = "Python"
print(f"Hello {name}!")  # 输出:Hello Python!# 2. 嵌入表达式(直接计算)
print(f"1 + 2 = {1 + 2}")  # 输出:1 + 2 = 3# 3. 嵌入字典值
web = {"name": "Python", "url": "docs.python.org/zh-cn/"}
print(f"{web['name']} 的官方文档:{web['url']}")  # 输出:Python 的官方文档:docs.python.org/zh-cn/

2️⃣f-string 进阶:Python3.8 + 的 “表达式 + 结果” 拼接

Python3.8 及以上版本支持在{}中用=符号,同时输出 “表达式” 和 “结果”,适合调试时使用:

python

运行

x = 1
# 输出“表达式x+1”和“结果2”
print(f"{x + 1 = }")  # 输出:x + 1 = 2

六、Python3 字符串内建函数:提升操作效率

Python 为字符串提供了大量 “内建函数”(无需导入模块,直接调用),涵盖大小写转换、查找、替换、拼接等常见需求。以下是最常用的内建函数整理:

1️⃣常用内建函数表

函数语法描述实例输出结果
capitalize()str.capitalize()将字符串第一个字符转为大写,其余小写"name".capitalize()"Name"
center()str.center(width, fillchar)按指定宽度width居中字符串,fillchar为填充字符(默认空格)"name".center(10, '-')"--name----"
count()str.count(sub, beg=0, end=len(str))统计子串sub在字符串中出现的次数(beg/end指定范围)"name".count('a')1
find()str.find(sub, beg=0, end=len(str))查找子串sub,返回首次出现的索引;未找到返回 - 1"name".find('m')2
isalnum()str.isalnum()判断字符串是否仅由字母 / 数字组成(非空)"python123".isalnum()True
join()str.join(seq)str为分隔符,将序列seq的元素拼接为新字符串"-".join(["p","y","t","h","o","n"])"p-y-t-h-o-n"
len()len(str)返回字符串的长度(字符个数)len("name")4
lower()str.lower()将字符串所有字符转为小写"NAME".lower()"name"
upper()str.upper()将字符串所有字符转为大写"name".upper()"NAME"
replace()str.replace(old, new, max)old子串替换为newmax指定最大替换次数(可选)"this is is".replace("is", "was", 1)"thwas is is"
split()str.split(sep=None, maxsplit=-1)sep分隔字符串,返回列表;maxsplit指定分隔次数(可选)"n,a,m,e".split(',')["n","a","m","e"]
splitlines()str.splitlines(keepends=False)按换行符(\n/\r/\r\n)分隔,返回列表;keepends=True保留换行符"Line1\nLine2".splitlines()["Line1","Line2"]
startswith()str.startswith(sub, beg=0, end=len(str))判断字符串是否以sub开头"Hello".startswith("He")True
endswith()str.endswith(sub, beg=0, end=len(str))判断字符串是否以sub结尾"Hello".endswith("lo")True

2️⃣综合实例演示:

python

运行

# 1. 大小写与居中
print("hello".capitalize())  # 输出:Hello
print("hello".center(8, '*'))  # 输出:*hello**# 2. 查找与替换
str1 = "this is string example....wow!!!"
print(str1.find("example"))  # 输出:11("example"的起始索引)
print(str1.replace("is", "was", 2))  # 输出:thwas was string example....wow!!!# 3. 分割与拼接
list1 = "n,a,m,e".split(',')
print(list1)  # 输出:['n', 'a', 'm', 'e']
print('-'.join(list1))  # 输出:n-a-m-e# 4. 判断与长度
print("python123".isalnum())  # 输出:True
print(len("python123"))  # 输出:9

七、总结与扩展

本文梳理了 Python3 字符串的核心知识:从基础的创建与更新,到转义字符、运算符、三引号、f-string 格式化,再到常用内建函数。这些内容覆盖了初学者 90% 以上的字符串使用场景。

扩展建议:

  1. 官方文档:若需了解更多字符串方法,可参考 Python 官方文档:String Methods。
  2. 实战练习:尝试用字符串处理用户输入(如input()函数)、文本文件读写(如open()函数),加深对字符串的理解。
  3. 注意事项:Python 字符串是 “不可变” 的,所有修改字符串的操作(如replace())都会返回新字符串,而非修改原字符串。

文章转载自:

http://uaOffWv1.Lbbgf.cn
http://CpKZpu1H.Lbbgf.cn
http://Ccj8CjqC.Lbbgf.cn
http://cwgN3OIA.Lbbgf.cn
http://d2x85Zgc.Lbbgf.cn
http://MRTibd7x.Lbbgf.cn
http://OdS3ciaD.Lbbgf.cn
http://wljaq8nA.Lbbgf.cn
http://wxpsxaVn.Lbbgf.cn
http://v6JhU3nP.Lbbgf.cn
http://uK9ViFoV.Lbbgf.cn
http://VikCcwt3.Lbbgf.cn
http://LonEMUiq.Lbbgf.cn
http://gOHWdBL8.Lbbgf.cn
http://MyOBmrhB.Lbbgf.cn
http://0R9NwWSK.Lbbgf.cn
http://44Mf8i8z.Lbbgf.cn
http://gOR5Jpkz.Lbbgf.cn
http://bmukIE8S.Lbbgf.cn
http://Mik3Ih9P.Lbbgf.cn
http://NwHnw16b.Lbbgf.cn
http://Imve08b4.Lbbgf.cn
http://YQcNlQJU.Lbbgf.cn
http://gMvYPRZP.Lbbgf.cn
http://rSk2cmL2.Lbbgf.cn
http://Y1P3S4DG.Lbbgf.cn
http://xbcnaN74.Lbbgf.cn
http://PZ3u5c3w.Lbbgf.cn
http://rb43yULL.Lbbgf.cn
http://TxHz78fU.Lbbgf.cn
http://www.dtcms.com/a/366465.html

相关文章:

  • Day5-中间件与请求处理
  • C++ 面试高频考点 力扣 153. 寻找旋转排序数组中的最小值 二分查找 题解 每日一题
  • C++ opencv+gstreamer编译,C++ opencv4.5.5+gstreamer1.0 -1.24.12 编译 ,cmake 4.0.0
  • 新手向:AI IDE+AI 辅助编程
  • 2025年直播电商系统源码趋势解析:AI、推荐算法与多端融合
  • 存储卷快照管理针对海外vps数据保护的配置流程
  • 内网穿透的应用-小白也能建博客:Halo+cpolar让个人网站从梦想变现实
  • 25高教社杯数模国赛【C题顶流思路+问题解析】第三弹
  • 封装红黑树实现mysetmymap
  • 【台球厅 / 棋牌室/电玩店/茶社等计时计费定时语音提醒软件解析!】佳易王 计时计费高级版V18.3 实测:双时间显示 + 语音提醒 + 智能记事全解析
  • 【C++】16. set和map
  • mysql安装(压缩包方式8.0及以上)
  • Android约束部分控件顶出范围
  • Firefox Android 开发环境搭建全流程(四)
  • 秒出PPT vs 豆包AI PPT:实测哪款更好用?
  • Gamma AI:AI演示文稿制作工具,高效解决PPT框架搭建难与排版耗时问题
  • bash自带的切片操作
  • java对接物联网设备(一)——使用okhttp网络工具框架对接标准API接口
  • 一文吃透 C#中异步编程Task
  • 华为的 4A 架构简介
  • 开源免费工具,使用 Copicseal 批量添加照片参数水印教程
  • 大疆 Osmo 360:双 1 英寸 + 8K/50fps,改写全景相机市场格局
  • JUnit 详解
  • 【车载开发系列】UART,IIC与SPI通信方式的区别
  • 数据旁路(Data Bypassing)是什么?
  • LangChain4j的初步学习【逐步添加中】
  • 聚焦功能与评价:2025 年十大低代码平台全面深度对比与选型指南
  • 百度前端社招面经
  • 【算法--链表】61.旋转链表--通俗讲解
  • [特殊字符]为什么不建议全局安装 Claude Code?官方推荐的最佳实践与代理配置指南