Python 字符串对象
1. 什么是字符串?
1.1 基本概念
字符串就像我们平时写的文字一样,是由一个个字符组成的序列。
# 想象一下我们写日记:
日记 = "今天天气很好,我学习了Python编程"
print(日记)
字符就是组成字符串的基本单位,比如:
- 字母:
a, b, c, A, B, C - 数字:
1, 2, 3 - 符号:
!, @, #, 空格 - 中文:
你, 好, 世, 界
1.2 生活中的比喻
把字符串想象成一串珍珠项链:
- 每颗珍珠就是一个字符
- 珍珠的排列顺序很重要
- 整串项链就是字符串
# 就像这样:
珍珠项链 = "abcdefg"
# 位置: 0123456
# 第一个珍珠是 'a',第二个是 'b'...
2. 创建字符串(三种方法)
2.1 单引号创建
# 方法1:单引号
名字 = '小明'
问候 = '你好'
print(名字) # 小明
print(问候) # 你好
2.2 双引号创建
# 方法2:双引号
课程 = "Python编程"
学校 = "计算机学院"
print(课程) # Python编程
print(学校) # 计算机学院
2.3 三引号创建(多行文本)
# 方法3:三引号(可以换行)
诗歌 = '''床前明月光
疑是地上霜
举头望明月
低头思故乡'''
print(诗歌)
自我介绍 = """我叫李华
今年18岁
喜欢编程和音乐"""
print(自我介绍)
2.4 为什么要有三种方法?
# 情况1:字符串中包含单引号
句子1 = "I'm a student" # 用双引号包住
句子2 = '他说:"你好"' # 用单引号包住
# 情况2:字符串中既有单引号又有双引号
句子3 = '''他说道:"I'm learning Python"'''
3. 字符串的基本操作
3.1 查看字符串长度
# 使用 len() 函数查看字符串有多少个字符
名字 = "张三"
print(len(名字)) # 2
英文名 = "Tom"
print(len(英文名)) # 3
空字符串 = ""
print(len(空字符串)) # 0
长文本 = "Hello World!"
print(len(长文本)) # 12
3.2 字符串连接(拼接)
# 方法1:使用 + 号
姓 = "张"
名 = "三"
全名 = 姓 + 名
print(全名) # 张三
问候语 = "你好," + 全名
print(问候语) # 你好,张三
# 方法2:使用 * 号重复字符串
笑声 = "哈" * 3
print(笑声) # 哈哈哈
分隔线 = "-" * 20
print(分隔线) # --------------------
3.3 访问字符串中的字符
# 字符串就像一列火车,每个字符是一个车厢
单词 = "Python"
# 正着数(从0开始):
# P y t h o n
# 0 1 2 3 4 5
print(单词[0]) # P(第一个字符)
print(单词[1]) # y(第二个字符)
print(单词[5]) # n(最后一个字符)
# 倒着数(从-1开始):
# P y t h o n
# -6 -5 -4 -3 -2 -1
print(单词[-1]) # n(最后一个字符)
print(单词[-2]) # o(倒数第二个字符)
4. 字符串的常用方法
4.1 大小写转换
# 假设我们收到用户输入,需要统一格式
用户输入 = "HeLLo WoRLd"
转大写 = 用户输入.upper()
print(转大写) # HELLO WORLD
转小写 = 用户输入.lower()
print(转小写) # hello world
首字母大写 = 用户输入.capitalize()
print(首字母大写) # Hello world
每个单词首字母大写 = 用户输入.title()
print(每个单词首字母大写) # Hello World
4.2 查找内容
文章 = "我今天去公园玩,公园里有很多花"
# 查找"公园"第一次出现的位置
位置1 = 文章.find("公园")
print(位置1) # 4
# 查找"公园"最后一次出现的位置
位置2 = 文章.rfind("公园")
print(位置2) # 10
# 统计"公园"出现的次数
次数 = 文章.count("公园")
print(次数) # 2
# 检查是否以某个词开头
是否开头 = 文章.startswith("我今天")
print(是否开头) # True
# 检查是否以某个词结尾
是否结尾 = 文章.endswith("很多花")
print(是否结尾) # True
4.3 替换内容
# 替换字符串中的某些内容
原文本 = "我喜欢吃苹果,苹果很甜"
# 把所有的"苹果"替换成"香蕉"
新文本 = 原文本.replace("苹果", "香蕉")
print(新文本) # 我喜欢吃香蕉,香蕉很甜
# 只替换第一个"苹果"
新文本2 = 原文本.replace("苹果", "香蕉", 1)
print(新文本2) # 我喜欢吃香蕉,苹果很甜
4.4 去除空白字符
# 用户输入时经常有多余的空格
用户输入 = " hello world "
去左边空格 = 用户输入.lstrip()
print(f"'{去左边空格}'") # 'hello world '
去右边空格 = 用户输入.rstrip()
print(f"'{去右边空格}'") # ' hello world'
去两边空格 = 用户输入.strip()
print(f"'{去两边空格}'") # 'hello world'
# 也可以去除其他字符
带星号的 = "***重要内容***"
清理后 = 带星号的.strip("*")
print(清理后) # 重要内容
4.5 分割和连接
# 分割字符串(像切西瓜一样)
水果列表 = "苹果,香蕉,橙子,葡萄"
水果们 = 水果列表.split(",")
print(水果们) # ['苹果', '香蕉', '橙子', '葡萄']
句子 = "我今天 去了 公园"
词语们 = 句子.split()
print(词语们) # ['我今天', '去了', '公园']
# 连接字符串(像串珠子一样)
水果数组 = ['苹果', '香蕉', '橙子']
连接结果 = "、".join(水果数组)
print(连接结果) # 苹果、香蕉、橙子
数字数组 = ['1', '2', '3']
连接数字 = "-".join(数字数组)
print(连接数字) # 1-2-3
5. 字符串切片(重点!)
5.1 什么是切片?
切片就像切蛋糕,从字符串中取出一部分。
文本 = "ABCDEFGHIJ"
# 基本格式:字符串[开始位置:结束位置]
第一部分 = 文本[0:3] # 从位置0开始,到位置3(不包括3)
print(第一部分) # ABC
第二部分 = 文本[3:6] # 从位置3开始,到位置6(不包括6)
print(第二部分) # DEF
# 省略开始位置(从头开始)
从头开始 = 文本[:4] # 相当于 [0:4]
print(从头开始) # ABCD
# 省略结束位置(到末尾结束)
到末尾 = 文本[6:] # 从位置6开始,一直到末尾
print(到末尾) # GHIJ
5.2 切片进阶
文本 = "ABCDEFGHIJ"
# 使用负索引
后三个 = 文本[-3:] # 从倒数第3个到末尾
print(后三个) # HIJ
前五个除了第一个 = 文本[1:5] # 从位置1到位置5
print(前五个除了第一个) # BCDE
# 带步长的切片(跳着取)
隔一个取一个 = 文本[::2] # 从开始到结束,每次跳2个
print(隔一个取一个) # ACEGI
从某个位置开始隔一个取一个 = 文本[1::2] # 从位置1开始,每次跳2个
print(从某个位置开始隔一个取一个) # BDFHJ
5.3 字符串反转
# 反转字符串的三种方法
方法1 = "hello"[::-1]
print(方法1) # olleh
方法2 = "".join(reversed("hello"))
print(方法2) # olleh
# 自己写循环(理解原理)
方法3 = ""
原字符串 = "hello"
for 字符 in 原字符串:
方法3 = 字符 + 方法3
print(方法3) # olleh