跳到主要内容

2.3 字符串

字符串(str)就是文本,是 Python 中使用最频繁的类型之一。

创建字符串

单引号和双引号都可以,效果完全一样:

a = "你好"
b = 'hello'
c = "I'm fine" # 文本里有单引号时,外面用双引号
d = '他说:"好"' # 文本里有双引号时,外面用单引号

三个引号可以写多行文本:

poem = """床前明月光,
疑是地上霜。"""
print(poem)

字符串拼接

first = "Python"
second = "很有趣"
print(first + second) # Python很有趣
print(first * 3) # PythonPythonPython(重复 3 次)

⚠️ 字符串只能和字符串相加,和数字相加会报错:

age = 18
print("我今年" + age) # ❌ TypeError
print("我今年" + str(age)) # ✅ 先转成字符串

f-string:格式化字符串(重点!)

要把变量嵌进文本里,最推荐的写法是 f-string:在引号前加个 f,然后用 {} 包住变量:

name = "小明"
age = 18
print(f"我叫{name},今年{age}岁") # 我叫小明,今年18岁

{} 里还可以做运算、控制小数位数:

price = 19.9
print(f"3 件共 {price * 3} 元") # 3 件共 59.699999999999996 元
print(f"3 件共 {price * 3:.2f} 元") # 3 件共 59.70 元(:.2f 保留两位小数)

记住 f-string,后面会一直用到它。

索引:取出某个字符

字符串中每个字符都有编号(索引),从 0 开始数

s = "Python"
# P y t h o n
# 0 1 2 3 4 5

print(s[0]) # P(第一个字符)
print(s[1]) # y
print(s[-1]) # n(-1 表示倒数第一个)
print(s[-2]) # o(倒数第二个)

💡 "从 0 开始数"是编程世界的通用习惯,一定要适应它。

切片:截取一段

s[开始:结束],包含开始位置,不包含结束位置(含头不含尾):

s = "Python"
print(s[0:3]) # Pyt(第 0、1、2 个,不含第 3 个)
print(s[2:]) # thon(从第 2 个到末尾)
print(s[:4]) # Pyth(从开头到第 3 个)
print(s[:]) # Python(完整复制)

常用字符串方法

方法就是"数据自带的功能",用 变量.方法名() 调用:

s = " Hello Python "

print(len(s)) # 16,字符串长度(len 是函数不是方法)
print(s.strip()) # "Hello Python",去掉两端空格
print(s.upper()) # " HELLO PYTHON ",转大写
print(s.lower()) # " hello python ",转小写
print(s.replace("Python", "World")) # 替换
print("Hello" in s) # True,判断是否包含

s2 = "苹果,香蕉,橘子"
print(s2.split(",")) # ['苹果', '香蕉', '橘子'],按逗号拆成列表

注意:字符串方法不会修改原字符串,而是返回一个新的字符串:

s = "hello"
s.upper()
print(s) # 还是 hello!

s = s.upper() # 想保留结果,要重新赋值
print(s) # HELLO

练习

  1. 用 f-string 输出:我叫XX,身高X.XX米(姓名、身高用变量)。
  2. 取出字符串 "20260726" 中的年、月、日三部分并打印。
  3. " python IS fun " 处理成 "Python Is Fun" 以外的简单版:去掉两端空格并全部转成小写。
点击查看答案
# 1
name = "小明"
height = 1.75
print(f"我叫{name},身高{height:.2f}米")

# 2
date = "20260726"
print(f"年:{date[:4]} 月:{date[4:6]} 日:{date[6:]}")

# 3
s = " python IS fun "
print(s.strip().lower()) # 方法可以连着调用

本章小结

  • 字符串用引号包裹,f-string 是拼接变量的首选
  • 索引从 0 开始,负数从后往前数
  • 切片 [a:b] 含头不含尾
  • 字符串方法返回新字符串,不改变原来的

下一节:2.4 输入与输出