Python字符串操作完全指南:从定义到常用方法

发布时间:2026/7/19 7:14:33
Python字符串操作完全指南:从定义到常用方法 1. 定义字符串在Python中字符串是由一系列字符组成的不可变序列可以使用单引号、双引号或三引号来定义。单引号和双引号# 使用单引号str1Hello, World!# 使用双引号str2Python Programming# 两者效果相同print(str1)# 输出: Hello, World!print(str2)# 输出: Python Programming三引号多行字符串# 使用三引号定义多行字符串multi_line这是一个 多行字符串 示例# 或者使用三个单引号multi_line2这也是一个 多行字符串 示例print(multi_line)空字符串empty_str# 空字符串empty_str2# 也是空字符串2. 转义字符转义字符用于表示一些特殊字符以反斜杠\开头。常用转义字符# 换行符str1第一行\n第二行print(str1)# 输出:# 第一行# 第二行# 制表符str2姓名\t年龄\t城市print(str2)# 输出: 姓名 年龄 城市# 单引号和双引号str3他说你好str4Its a beautiful dayprint(str3)# 输出: 他说你好print(str4)# 输出: Its a beautiful day# 反斜杠本身str5路径C:\\Users\\Nameprint(str5)# 输出: 路径C:\Users\Name# 回车符str6进度50%\r完成print(str6)# 输出: 完成# 退格符str7Python\b\b\b# 删除最后三个字符print(str7)# 输出: Pyt原始字符串忽略转义# 使用r前缀创建原始字符串raw_strrC:\Users\Name\Documentsprint(raw_str)# 输出: C:\Users\Name\Documents# 对比普通字符串normal_strC:\\Users\\Name\\Documentsprint(normal_str)# 输出: C:\Users\Name\Documents3. 字符串格式化方法Python提供了多种字符串格式化方式让字符串拼接更加灵活。1. % 格式化传统方法name张三age25score95.5# 基本用法str1姓名%s年龄%d%(name,age)print(str1)# 输出: 姓名张三年龄25# 浮点数格式化str2分数%.2f%scoreprint(str2)# 输出: 分数95.50# 宽度和对齐str3|%10s|%name# 右对齐宽度10str4|%-10s|%name# 左对齐宽度10print(str3)# 输出: | 张三|print(str4)# 输出: |张三 |2. format() 方法推荐name李四age30salary8000.50# 位置参数str1姓名{}年龄{}.format(name,age)print(str1)# 输出: 姓名李四年龄30# 索引参数str2年龄{1}姓名{0}.format(name,age)print(str2)# 输出: 年龄30姓名李四# 关键字参数str3姓名{name}工资{salary:.2f}.format(namename,salarysalary)print(str3)# 输出: 姓名李四工资8000.50# 格式化选项str4数字{:10}.format(123)# 右对齐str5数字{:10}.format(123)# 左对齐str6数字{:^10}.format(123)# 居中对齐print(str4)# 输出: 数字 123print(str5)# 输出: 数字123print(str6)# 输出: 数字 1233. f-stringPython 3.6最推荐name王五age28height175.5# 基本用法str1f姓名{name}年龄{age}print(str1)# 输出: 姓名王五年龄28# 表达式计算str2f明年年龄{age1}print(str2)# 输出: 明年年龄29# 调用方法str3f姓名大写{name.upper()}print(str3)# 输出: 姓名大写王五# 格式化数字str4f身高{height:.1f}cmprint(str4)# 输出: 身高175.5cm# 对齐和填充str5f|{name:^10}|# 居中对齐宽度10str6f|{age:10}|# 右对齐宽度10print(str5)# 输出: | 王五 |print(str6)# 输出: | 28|4. 字符串索引字符串支持索引操作可以通过下标访问单个字符。正向索引从0开始textPythonprint(text[0])# 输出: Pprint(text[1])# 输出: yprint(text[2])# 输出: tprint(text[3])# 输出: hprint(text[4])# 输出: oprint(text[5])# 输出: n负向索引从-1开始textPythonprint(text[-1])# 输出: n最后一个字符print(text[-2])# 输出: oprint(text[-3])# 输出: hprint(text[-4])# 输出: tprint(text[-5])# 输出: yprint(text[-6])# 输出: P索引越界错误textHellotry:print(text[10])# 索引超出范围exceptIndexErrorase:print(f索引错误{e})# 输出: 索引错误string index out of rangetry:print(text[-10])# 负索引超出范围exceptIndexErrorase:print(f索引错误{e})# 输出: 索引错误string index out of range5. 字符串切片切片用于获取字符串的子串语法为[start:end:step]。基本切片textPython Programming# 获取前6个字符print(text[0:6])# 输出: Pythonprint(text[:6])# 输出: Pythonstart默认为0# 获取第7个字符到最后print(text[7:])# 输出: Programmingend默认为末尾# 获取整个字符串print(text[:])# 输出: Python Programming# 使用负索引print(text[-11:])# 输出: Programmingprint(text[:-12])# 输出: Python步长切片textABCDEFGHIJ# 每隔一个字符取一个print(text[::2])# 输出: ACEGI# 从索引1开始每隔一个字符取一个print(text[1::2])# 输出: BDFHJ# 反向步长反转字符串print(text[::-1])# 输出: JIHGFEDCBA# 从索引8到2步长为-2print(text[8:2:-2])# 输出: IGE切片越界处理textHello# 切片不会引发索引错误print(text[0:10])# 输出: Helloend超出范围print(text[10:20])# 输出: 空字符串start超出范围print(text[-10:5])# 输出: Hellostart负索引超出范围6. 字符串遍历有多种方法可以遍历字符串中的字符。使用for循环textPython# 直接遍历字符forcharintext:print(char,end )# 输出: P y t h o nprint()# 换行# 同时获取索引和字符forindex,charinenumerate(text):print(f索引{index}:{char})# 输出:# 索引0: P# 索引1: y# 索引2: t# 索引3: h# 索引4: o# 索引5: n使用while循环textHelloi0whileilen(text):print(f字符{i}:{text[i]})i1# 输出:# 字符0: H# 字符1: e# 字符2: l# 字符3: l# 字符4: o使用range()和索引textWorldforiinrange(len(text)):print(f位置{i}:{text[i]})# 输出:# 位置0: W# 位置1: o# 位置2: r# 位置3: l# 位置4: d反向遍历textPython# 使用负索引foriinrange(-1,-len(text)-1,-1):print(text[i],end )# 输出: n o h t y Pprint()# 换行# 使用切片forcharintext[::-1]:print(char,end )# 输出: n o h t y P7. 字符串常用方法Python字符串提供了丰富的内置方法以下分类介绍常用方法。大小写转换textHello Worldprint(text.upper())# 输出: HELLO WORLDprint(text.lower())# 输出: hello worldprint(text.title())# 输出: Hello Worldprint(text.capitalize())# 输出: Hello worldprint(text.swapcase())# 输出: hELLO wORLD查找和替换textPython is great. Python is powerful.# 查找子串位置print(text.find(Python))# 输出: 0print(text.find(Java))# 输出: -1未找到print(text.rfind(Python))# 输出: 18从右向左找print(text.index(great))# 输出: 10print(text.count(Python))# 输出: 2出现次数# 替换new_texttext.replace(Python,Java)print(new_text)# 输出: Java is great. Java is powerful.# 部分替换new_text2text.replace(Python,Java,1)# 只替换第一个print(new_text2)# 输出: Java is great. Python is powerful.分割和连接# 分割字符串textapple,banana,orange,grapefruitstext.split(,)print(fruits)# 输出: [apple, banana, orange, grape]# 限制分割次数text2one two three four fivepartstext2.split( ,2)print(parts)# 输出: [one, two, three four five]# 按行分割multiline第一行\n第二行\n第三行linesmultiline.splitlines()print(lines)# 输出: [第一行, 第二行, 第三行]# 连接字符串words[Hello,World,Python]joined .join(words)print(joined)# 输出: Hello World Python# 使用不同分隔符joined2-.join(words)print(joined2)# 输出: Hello-World-Python去除空白字符text Hello World print(text.strip())# 输出: Hello World去除两端空白print(text.lstrip())# 输出: Hello World 去除左端空白print(text.rstrip())# 输出: Hello World去除右端空白# 去除特定字符text2***Hello***print(text2.strip(*))# 输出: Helloprint(text2.lstrip(*))# 输出: Hello***print(text2.rstrip(*))# 输出: ***Hello判断方法# 检查开头和结尾textHello Worldprint(text.startswith(Hello))# 输出: Trueprint(text.endswith(World))# 输出: Trueprint(text.startswith(Hi))# 输出: False# 检查字符类型print(abc123.isalnum())# 输出: True字母或数字print(abc.isalpha())# 输出: True字母print(123.isdigit())# 输出: True数字print(123.45.isnumeric())# 输出: Falseprint( .isspace())# 输出: True空白字符print(Hello World.istitle())# 输出: True标题格式print(HELLO.isupper())# 输出: Trueprint(hello.islower())# 输出: True对齐和填充textPythonprint(text.center(20))# 输出: Pythonprint(text.center(20,*))# 输出: *******Python*******print(text.ljust(15))# 输出: Pythonprint(text.rjust(15))# 输出: Pythonprint(text.zfill(10))# 输出: 0000Python用0填充编码和解码# 字符串编码text你好世界encodedtext.encode(utf-8)print(f编码后:{encoded})# 输出: b\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c# 字节解码decodedencoded.decode(utf-8)print(f解码后:{decoded})# 输出: 你好世界# 不同编码text2Helloprint(text2.encode(ascii))# 输出: bHelloprint(text2.encode(utf-16))# 输出: b\xff\xfeH\x00e\x00l\x00l\x00o\x00其他实用方法# 字符串长度textPythonprint(len(text))# 输出: 6# 检查包含关系print(Pyintext)# 输出: Trueprint(Javaintext)# 输出: False# 最大最小字符print(max(text))# 输出: yprint(min(text))# 输出: P# 字符串比较print(abcabc)# 输出: Trueprint(abcdef)# 输出: True按字典序print(abcab)# 输出: True# 格式化映射data{name:张三,age:25}text姓名{name}年龄{age}.format_map(data)print(text)# 输出: 姓名张三年龄25总结Python字符串操作是编程中的基础技能掌握这些操作能大大提高编码效率。本文涵盖了字符串的定义方式单引号、双引号、三引号转义字符处理特殊字符格式化方法%格式化、format()、f-string索引操作正向和负向索引切片技巧基本切片和步长切片遍历方法多种遍历方式常用方法大小写转换、查找替换、分割连接等建议在实际编程中多练习这些操作特别是f-string格式化和切片技巧它们能让代码更加简洁高效。字符串的不可变性也意味着每次修改都会创建新字符串在处理大量字符串操作时需要注意性能问题。