当前位置:首页>python>Python语言基础:9_字符串

Python语言基础:9_字符串

  • 2026-09-26 19:57:03
Python语言基础:9_字符串

Python3 字符串超详细新手教程

字符串(str)是 Python 中最常用的数据类型之一,用来存储文本信息,比如名字、地址、文章内容等。本文从最基础的定义开始,覆盖索引、切片、常用方法、格式化等全部核心知识点,每个知识点都配可运行的代码和结果,零基础也能完全看懂。


一、什么是字符串

用引号包裹起来的文本内容就是字符串,在 Python 中类型为 str。

  • 引号必须是英文半角,中文引号会直接报错
  • 引号必须成对出现,前后一致
  • 字符串里的内容可以是中文、英文、数字、符号等任意文本
# 定义一个字符串name = "小明"print(name)print(type(name))  # 查看类型:<class 'str'>

二、字符串的 4 种定义方式

1. 单引号 ' '

s1 = 'Hello Python'print(s1)

2. 双引号 " "

s2 = "你好,世界"print(s2)

💡 单引号和双引号没有本质区别,灵活搭配可以避免转义: 如果字符串内部有单引号,外面就用双引号;内部有双引号,外面就用单引号。

# 不用转义,更简洁msg = "I'm a student"  # 内部有单引号,外面用双引号print(msg)info = '他说:"明天放假"'  # 内部有双引号,外面用单引号print(info)

3. 三引号 ''' ''' / """ """

用来定义多行字符串,会保留原文的换行和空格格式,也可以当作多行注释使用。

poem = """静夜思床前明月光,疑是地上霜。举头望明月,低头思故乡。"""print(poem)

运行后会完整保留换行格式,输出整首诗。

4. 原始字符串 r'' / r""

字符串前加字母 r,表示取消所有转义字符,里面的内容会原样输出。 最常用场景:写文件路径、正则表达式,避免反斜杠被识别成转义符。

# 普通字符串:\t 会被识别成制表符path1 = "C:\new\test.txt"print(path1)  # 输出会换行、出现制表符,结果错乱# 原始字符串:原样输出,路径正常path2 = r"C:\new\test.txt"print(path2)  # C:\new\test.txt  完全正确

三、字符串的索引(下标取字符)

字符串是有序的字符序列,每个字符都有一个编号,这个编号就叫「索引 / 下标」。

核心规则

  1. 正向索引:从左往右,从 0 开始编号
  2. 反向索引:从右往左,从 -1 开始编号
  3. 只能通过索引取值,不能通过索引修改字符(字符串不可变,后面会讲)
  4. 索引超出范围会直接报错(新手高频错误)

示例演示

s = "Python"# 字符: P y t h o n# 正向: 0 1 2 3 4 5# 反向:-6-5-4-3-2-1# 正向索引print(s[0])  # P  第1个字符print(s[2])  # t  第3个字符# 反向索引print(s[-1])  # n  最后1个字符print(s[-3])  # h  倒数第3个字符

❌ 新手易错:索引越界

字符串长度是 6,最大正向索引是 5,写 s[6] 会报错:

print(s[6])# 报错:IndexError: string index out of range

四、字符串切片(截取子串,重点 + 难点)

切片就是从字符串中截取一段连续的字符,得到一个新的子字符串。

语法格式

字符串[起始索引:结束索引:步长]

核心规则(必背)

  1. 左闭右开
    :包含起始索引的字符,不包含结束索引的字符
  2. 三个参数都可以省略,有默认值:
    • 起始索引省略:默认从开头(索引 0)开始
    • 结束索引省略:默认截取到末尾
    • 步长省略:默认步长为 1,一个挨着一个取
  3. 步长为负数:从右往左反向取
  4. 切片不会报错,超出范围会自动截断

基础示例

s = "abcdefg"# 索引:a b c d e f g#       0 1 2 3 4 5 6# 1. 截取索引1到4(包含1,不包含4)print(s[1:4])  # bcd# 2. 省略起始:从开头到索引3print(s[:3])   # abc# 3. 省略结束:从索引2到末尾print(s[2:])   # cdefg# 4. 全省略:复制整个字符串print(s[:])    # abcdefg

带步长的切片

s = "abcdefg"# 步长为2:隔一个取一个print(s[::2])  # aceg# 步长为-1:反转字符串(最常用技巧)print(s[::-1])  # gfedcba# 从索引5到1,反向取,步长-1print(s[5:1:-1])  # fedc

五、字符串基础运算

1. 拼接:+

把两个字符串首尾连在一起,生成新字符串。

a = "Hello"b = "Python"res = a + " " + bprint(res)  # Hello Python

⚠️ 新手大坑:字符串不能直接和数字相加,必须先把数字转成字符串。

# 错误写法,直接报错# print("年龄:" + 18)# 正确写法print("年龄:" + str(18))  # 年龄:18

2. 重复:*

把字符串重复 N 次,生成新字符串。

print("加油!" * 3)  # 加油!加油!加油!print("-" * 20)     # 打印20个减号,做分割线

3. 成员运算:in / not in

判断一个字符 / 子串是否在字符串中,返回布尔值 True/False。

s = "Hello Python"print("P" in s)      # Trueprint("python" in s) # False  区分大小写print("abc" not in s)# True

4. 求长度:len()

统计字符串中字符的个数。

s = "Python编程"print(len(s))  # 8  中文、英文都算1个字符

六、转义字符

在字符串中,一些特殊的字符无法直接打出来,需要用 \ 加字母来表示,这就是转义字符。

转义字符
含义
\n
换行符
\t
制表符(相当于按一下 Tab 键,缩进 4/8 个空格)
\\
表示一个普通的反斜杠 \
\'
表示一个普通单引号
\"
表示一个普通双引号

示例演示

# 换行print("第一行\n第二行\n第三行")# 制表符对齐print("姓名\t年龄\t成绩")print("小明\t18\t95")print("小红\t17\t98")# 输出反斜杠print("C:\\Users\\桌面")

💡 不想用转义字符,就在字符串前加 r,用原始字符串,前面已经讲过。


七、字符串常用内置方法

字符串自带非常多工具方法,用来处理文本。注意:字符串是不可变类型,所有修改类的方法,都是返回新字符串,原字符串不会改变。

1. 判断类方法(返回 True/False)

方法
作用
startswith(子串)
判断是否以指定子串开头
endswith(子串)
判断是否以指定子串结尾
isalpha()
判断是否全是字母
isdigit()
判断是否全是数字
isspace()
判断是否全是空白字符(空格、换行、制表符)
isupper()
判断字母是否全大写
islower()
判断字母是否全小写

示例

filename = "test.py"print(filename.endswith(".py"))  # True  判断是不是Python文件num_str = "12345"print(num_str.isdigit())  # True  判断是不是纯数字字符串word = "HELLO"print(word.isupper())     # True

2. 查找统计类方法

方法
作用
find(子串)
查找子串第一次出现的索引,找不到返回 -1
index(子串)
查找子串第一次出现的索引,找不到直接报错
count(子串)
统计子串出现的次数

示例

s = "hello python hello world"print(s.find("hello"))   # 0  第一次出现的位置print(s.find("abc"))     # -1  找不到返回-1print(s.count("hello"))  # 2  出现了2次

3. 修改处理类方法(返回新字符串)

方法
作用
replace(旧子串, 新子串, 替换次数)
替换指定子串,默认替换全部
strip()
去除字符串首尾的空白字符(空格、换行、制表符)
lstrip()
只去除左边空白
rstrip()
只去除右边空白
upper()
全部字母转大写
lower()
全部字母转小写
capitalize()
首字母大写,其余小写

示例

# 替换s = "我喜欢Java,Java很好学"new_s = s.replace("Java", "Python")print(new_s)  # 我喜欢Python,Python很好学# 去空格user = "  小明  \n"print(user.strip())  # 小明  首尾空白全去掉# 大小写转换word = "Hello World"print(word.upper())  # HELLO WORLDprint(word.lower())  # hello world

4. 分割与拼接

① split () 分割:字符串 → 列表

按指定分隔符把字符串拆成列表,默认按空格分割。

# 按空格分割s = "苹果 香蕉 橙子 西瓜"fruits = s.split()print(fruits)  # ['苹果', '香蕉', '橙子', '西瓜']# 按逗号分割data = "小明,18,男,90分"info = data.split(",")print(info)  # ['小明', '18', '男', '90分']

② join () 拼接:列表 → 字符串

用指定字符串把列表中的元素拼接成一个完整字符串。

lst = ["北京", "上海", "广州", "深圳"]# 用逗号连接res = ",".join(lst)print(res)  # 北京,上海,广州,深圳# 用短横线连接res2 = "-".join(lst)print(res2) # 北京-上海-广州-深圳

八、字符串格式化(重点,日常开发必用)

把变量、表达式动态拼接到字符串里,有三种方式,主推 f-string(Python3.6+ 支持,最简洁好用)。

方式 1:% 占位符(老式写法,了解即可)

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

name = "小明"age = 18score = 95.5msg = "姓名:%s,年龄:%d,成绩:%.1f" % (name, age, score)print(msg)# 输出:姓名:小明,年龄:18,成绩:95.5

方式 2:format () 方法(兼容老版本)

用 {} 占位,后面 .format() 里填变量。

name = "小红"age = 17msg = "姓名:{},年龄:{}岁".format(name, age)print(msg)

方式 3:f-string(主推,最常用)

在字符串前加 f,直接把变量、表达式写在 {} 里,直观又简洁。

name = "小刚"age = 19# 直接放变量print(f"姓名:{name},年龄:{age}")# 可以放表达式print(f"明年年龄:{age + 1}")# 格式化数字:保留2位小数price = 9.999print(f"价格:{price:.2f} 元")  # 价格:10.00 元# 百分比显示rate = 0.856print(f"完成率:{rate:.1%}")  # 完成率:85.6%

九、字符串的核心特性:不可变性

Python 的字符串是不可变类型,意思是:字符串一旦创建,里面的字符就不能修改、删除、增加。

示例验证

s = "hello"# ❌ 错误:尝试通过索引修改字符,直接报错s[0] = "H"# 报错:TypeError: 'str' object does not support item assignment

正确的修改方式

生成一个新字符串,重新赋值给变量。

s = "hello"# 方式1:重新赋值s = "Hello"# 方式2:用replace生成新字符串s = s.replace("h", "H")print(s)  # Hello

十、新手高频易错点总结

  1. 引号不成对、用中文引号
    :前后引号必须一致,且是英文半角
  2. 索引越界
    :索引从 0 开始,最大索引是「长度 - 1」
  3. 字符串和数字直接相加
    :必须用 str() 转成字符串再拼接
  4. 以为方法会修改原字符串
    :所有字符串方法都返回新串,原串不变
  5. 切片记不住左闭右开
    :记住结束索引的字符永远取不到
  6. 路径里的反斜杠被转义
    :写文件路径记得加 r 用原始字符串
  7. 大小写敏感
    :"A" 和 "a" 是不同的字符,判断、查找都区分大小写

最新文章

随机文章