Python中字符串常用操作技巧全解析(新手必看)

 更新时间:2026年08月26日 09:27:27   作者:青禾837  
这篇文章带你从零掌握Python中字符串的定义、转义、格式化、索引、切片、遍历和常用方法,包含大量代码示例,助你轻松应对文本处理,快跟随小编一起学习起来吧

大家好,字符串是Python中使用频率最高的数据类型之一。无论是处理用户输入、解析文本文件,还是生成日志信息,都离不开它。这篇文章我们将系统性地学习字符串的七个核心方面,每个部分都配有代码示例,方便理解和查阅。

一、定义

字符串是由字符组成的序列,用引号括起来表示。

定义方式

# 单引号
name = '张三'

# 双引号
city = "北京"

# 三引号(支持多行)
desc = """这是一段
多行文本
可以换行写"""

# 三单引号同样支持多行
content = '''也是
多行文本'''

空字符串

empty1 = ""
empty2 = ''
empty3 = str()   # 使用 str() 构造方法

单引号和双引号在功能上完全等价,选择哪种主要看字符串内容是否包含引号:

# 字符串包含单引号,外层用双引号
msg1 = "I'm a student"

# 字符串包含双引号,外层用单引号
msg2 = '他说:"你好"'

# 或者使用转义符
msg3 = 'I\'m a student'

二、转义

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

常用转义字符

转义符含义
\'单引号
\"双引号
\\反斜杠本身
\n换行符
\t制表符(Tab键)
\r回车符
\b退格符
# 换行
print("第一行\n第二行")
# 输出:
# 第一行
# 第二行

# 制表符
print("姓名\t年龄\t城市")
print("张三\t25\t北京")

# 路径中的反斜杠需要转义
path = "C:\\Users\\Documents\\file.txt"

# 或者使用原始字符串(推荐)
path = r"C:\Users\Documents\file.txt"

原始字符串

在字符串前加 r,可以使字符串中的反斜杠不被解释为转义字符:

# 普通字符串
s1 = "C:\new\test"   # \n 会被解释为换行

# 原始字符串
s2 = r"C:\new\test"  # 原样输出 C:\new\test

原始字符串在写正则表达式、文件路径时非常实用。

三、格式化方法

格式化是指将变量值嵌入到字符串中,Python提供了多种方式。

1.%格式化(旧式)

name = "张三"
age = 25

print("我叫%s,今年%d岁" % (name, age))
# 我叫张三,今年25岁

常用占位符:%s 字符串、%d 整数、%f 浮点数。

2.format()方法

name = "张三"
age = 25

# 按位置
print("我叫{},今年{}岁".format(name, age))

# 按索引
print("我叫{1},今年{0}岁".format(age, name))

# 按变量名
print("我叫{name},今年{age}岁".format(name=name, age=age))

3. f-string(推荐,Python 3.6+)

name = "张三"
age = 25

print(f"我叫{name},今年{age}岁")
# 我叫张三,今年25岁

f-string 还可以嵌入表达式:

x, y = 3, 5
print(f"{x} + {y} = {x + y}")   # 3 + 5 = 8

price = 12.345
print(f"价格:{price:.2f}元")   # 价格:12.35元

f-string 是目前最推荐的格式化方式,可读性最好,性能也最高。

四、索引

字符串中的每个字符都有一个位置编号,可以通过索引来访问。

索引规则

正向索引:从 0 开始,从左到右

负向索引:从 -1 开始,从右到左

s = "Python"

# 正向索引
print(s[0])    # P
print(s[3])    # h
print(s[5])    # n

# 负向索引
print(s[-1])   # n
print(s[-3])   # h

索引对应关系

字符Python
正向012345
负向-6-5-4-3-2-1

索引越界

使用索引时,如果超出范围会报错:

s = "Python"
# print(s[10])   # IndexError: string index out of range

字符串是不可变类型,不能通过索引修改字符:

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

五、切片

切片是从字符串中截取子串的操作,语法为 [start:end:step]

基本语法

s = "Hello, World!"

# 截取一段
print(s[0:5])     # Hello   (包含索引0,不包含索引5)
print(s[7:12])    # World   (包含索引7,不包含索引12)

# 省略开始或结束
print(s[:5])      # Hello   (从开头到索引4)
print(s[7:])      # World!  (从索引7到末尾)
print(s[:])       # Hello, World!  (全部)

# 负索引切片
print(s[-6:-1])   # World   (从倒数第6到倒数第2)

步长

s = "abcdefghij"

print(s[::2])     # acegi   (从开头到末尾,每2个取1个)
print(s[1::2])    # bdfhj   (从索引1开始,每2个取1个)
print(s[::-1])    # jihgfedcba  (反转字符串)

切片的特点

  • 左闭右开:包含 start,不包含 end
  • 容错性好:索引超出范围不会报错,只返回能取到的部分
s = "abc"
print(s[0:10])    # abc   (不会报错)
print(s[10:20])   # ''    (返回空字符串)

六、遍历

遍历字符串的三种常用方式。

1. 直接遍历字符

s = "Python"

for char in s:
    print(char)
# 输出:P y t h o n (每行一个)

2. 通过索引遍历

s = "Python"

for i in range(len(s)):
    print(s[i])

3.enumerate()同时获取索引和值

s = "Python"

for index, char in enumerate(s):
    print(f"索引{index}:{char}")
# 索引0:P
# 索引1:y
# 索引2:t
# 索引3:h
# 索引4:o
# 索引5:n

4. 判断字符类型

遍历时经常配合字符判断方法:

s = "Hello123"

for char in s:
    if char.isdigit():
        print(f"{char} 是数字")
    elif char.isalpha():
        print(f"{char} 是字母")

七、常用方法

字符串提供了大量内置方法,这里按功能分类整理。

1. 大小写转换

方法说明示例
upper()全部转大写"hello".upper() → "HELLO"
lower()全部转小写"HELLO".lower() → "hello"
capitalize()首字母大写"hello".capitalize() → "Hello"
title()每个单词首字母大写"hello world".title() → "Hello World"
swapcase()大小写互换"Hello".swapcase() → "hELLO"
text = "python is FUN"
print(text.upper())      # PYTHON IS FUN
print(text.lower())      # python is fun
print(text.capitalize()) # Python is fun

2. 去除空白

方法说明
strip()去除两端空白字符(空格、换行、制表符)
lstrip()去除左端空白
rstrip()去除右端空白
text = "  hello  \n"
print(text.strip())     # "hello"
print(text.lstrip())    # "hello  \n"
print(text.rstrip())    # "  hello"

也可以指定要去除的字符:

text = "!!!hello!!!"
print(text.strip("!"))   # "hello"

3. 查找与判断

方法说明
find(sub)返回第一个匹配的子串起始索引,找不到返回 -1
index(sub)与 find 相同,但找不到会抛出异常
rfind(sub)从右向左查找
startswith(prefix)是否以指定前缀开头
endswith(suffix)是否以指定后缀结尾
count(sub)统计子串出现次数
s = "hello world hello"

print(s.find("world"))    # 6
print(s.find("python"))   # -1
print(s.index("world"))   # 6
# print(s.index("python")) # ValueError

print(s.startswith("hello"))  # True
print(s.endswith("hello"))    # True
print(s.count("hello"))       # 2

4. 拆分与拼接

方法说明
split(sep)按分隔符拆分成列表
rsplit(sep)从右向左拆分
splitlines()按换行符拆分
join(iterable)将可迭代对象拼接成字符串
# split
data = "apple,banana,orange"
result = data.split(",")
print(result)   # ['apple', 'banana', 'orange']

# split 可以指定最大拆分次数
data = "a,b,c,d"
print(data.split(",", 2))  # ['a', 'b', 'c,d']

# splitlines
text = "第一行\n第二行\n第三行"
print(text.splitlines())   # ['第一行', '第二行', '第三行']

# join
items = ['a', 'b', 'c']
print("-".join(items))     # 'a-b-c'

5. 替换

方法说明
replace(old, new, count)替换子串,可指定替换次数
s = "hello world hello"

print(s.replace("hello", "hi"))          # hi world hi
print(s.replace("hello", "hi", 1))       # hi world hello

6. 对齐与填充

方法说明
center(width, fillchar)居中
ljust(width, fillchar)左对齐
rjust(width, fillchar)右对齐
zfill(width)右对齐,用0填充
s = "hello"

print(s.center(11, "*"))   # "***hello***"
print(s.ljust(10, "-"))    # "hello-----"
print(s.rjust(10, "-"))    # "-----hello"
print(s.zfill(10))         # "00000hello"

7. 判断类型

方法说明
isalpha()是否全是字母
isdigit()是否全是数字
isalnum()是否全是字母或数字
isspace()是否全是空白字符
islower()是否全是小写
isupper()是否全是大写
istitle()是否符合标题格式
print("hello".isalpha())    # True
print("123".isdigit())      # True
print("hello123".isalnum()) # True
print("   ".isspace())      # True
print("Hello".istitle())    # True

八、总结

字符串在Python中占据重要地位,掌握好以下几个维度即可应对绝大多数场景:

知识点核心要点
定义单引号、双引号、三引号
转义\n\t\\,原始字符串 r""
格式化%format()、f-string(推荐)
索引正向从0开始,负向从-1开始
切片[start:end:step],左闭右开
遍历forrangeenumerate()
常用方法大小写、去空白、查找、拆分拼接、替换等

字符串的各个方法不需要死记硬背,多写代码自然就熟悉了。如果遇到不记得的方法,可以用 dir(str) 查看所有方法,或者用 help(str.method) 查看详细说明。

到此这篇关于Python中字符串常用操作技巧全解析(新手必看)的文章就介绍到这了,更多相关Python字符串操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python之消除前缀重命名的方法

    python之消除前缀重命名的方法

    今天小编就为大家分享一篇python之消除前缀重命名的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求

    如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求

    我们的网站经常被各种蜘蛛爬虫光顾,由于这些爬虫都有UserAgent,所以很多朋友使用UserAgent判断请求的发起者是否是搜索引擎爬虫的方式是很不准确的,接下来,通过本篇文章给大家介绍准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求的方法,需要的朋友可以参考下
    2015-10-10
  • pycharm修改IP、端口无效的问题及解决方案

    pycharm修改IP、端口无效的问题及解决方案

    文章介绍了在PyCharm中修改IP和端口无效的问题解决步骤,包括修改`app.py`文件、删除PyCharm启动项中的所有数据、新增一个Python配置并设置参数,最后进行测试
    2025-02-02
  • Python实现号码归属地查询功能

    Python实现号码归属地查询功能

    这篇文章主要为大家详细介绍了如何利用Python实现对手机号码进行地域分析并查询归属地的功能,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-12-12
  • PyTorch的SoftMax交叉熵损失和梯度用法

    PyTorch的SoftMax交叉熵损失和梯度用法

    今天小编就为大家分享一篇PyTorch的SoftMax交叉熵损失和梯度用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python复制Excel中的行、列和单元格的操作代码

    Python复制Excel中的行、列和单元格的操作代码

    在Excel中,复制行、列和单元格是日常工作中经常需要进行的操作,它可以帮助你快速调整数据布局、复制数据模板或进行数据的批量处理,本文将详细介绍如何使用Python将Excel中的行、列、或单元格范围复制到指定位置,需要的朋友可以参考下
    2024-09-09
  • Python中无限循环需要什么条件

    Python中无限循环需要什么条件

    在本篇文章里小编给大家分享的是关于Python中无限循环的条件的相关文章,需要的朋友们可以参考下。
    2020-05-05
  • ubuntu中pycharm卸载与安装教程

    ubuntu中pycharm卸载与安装教程

    本文介绍了在Ubuntu系统上卸载和安装PyCharm的具体步骤,包括删除安装包、卸载文件夹、删除配置文件夹、从官网下载并安装Professional版、设置快捷方式以及修改启动器等内容
    2026-05-05
  • 使用python实现对元素的长截图功能

    使用python实现对元素的长截图功能

    这篇文章主要介绍了用python实现对元素的长截图功能,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-11-11
  • 使用Anaconda3建立虚拟独立的python2.7环境方法

    使用Anaconda3建立虚拟独立的python2.7环境方法

    今天小编就为大家分享一篇使用Anaconda3建立虚拟独立的python2.7环境方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论