我是 Jerry,一个正在学 Python 的普通人。
前面写了列表、元组、字典、集合,都是数据类型。今天聊聊字符串 —— Python 里用的最多的东西,几乎没有之一。
字符串就是一段文本,用引号包起来。
# 用单引号name='Jerry'# 用双引号name="Jerry"# 用三引号(多行字符串)text="""这是多行字符串"""
字符串特点:
不可变 —— 创建后不能修改
有索引 —— 可以用下标访问单个字符
有顺序 —— 从左到右有顺序
# 单引号s1='hello'# 双引号s2="hello"# 三引号(多行)s3="""这是多行字符串"""
# 换行 \ns="第一行\n第二行"print(s)# 第一行# 第二行# 制表符 \ts="名字\t年龄"print(s) # 名字 年龄# 转义引号s="他说:\"你好\""print(s) # 他说:"你好"
# 前面加 rpath=r"C:\Users\Jerry\Desktop"print(path) # C:\Users\Jerry\Desktop
s="Python"# 正向索引:从0开始print(s[0]) # Pprint(s[1]) # yprint(s[2]) # t# 负向索引:从-1开始(最后一个字符)print(s[-1]) # nprint(s[-2]) # oprint(s[-3]) # h
s="Python"# s[开始:结束] —— 包含开始,不包含结束print(s[0:3]) # Pytprint(s[1:4]) # yth# s[:结束] —— 从头开始print(s[:3]) # Pyt# s[开始:] —— 到末尾结束print(s[3:]) # hon# s[:] —— 复制整个字符串print(s[:]) # Python# s[开始:结束:步长]print(s[::2]) # Pto(每隔一个取一个)print(s[::-1]) # nohtyP(反转字符串)
s="Hello World"# find() —— 查找子串位置(找不到返回-1)print(s.find("World")) # 6print(s.find("Python")) # -1# index() —— 查找子串位置(找不到报错)print(s.index("World")) # 6# print(s.index("Python")) # 报错# in —— 判断是否包含print("World"ins) # Trueprint("Python"ins) # False# startswith() / endswith()print(s.startswith("Hello")) # Trueprint(s.endswith("World")) # True
s="Hello World"# replace() —— 替换print(s.replace("World", "Python")) # Hello Pythonprint(s.replace("o", "0")) # Hell0 W0rld# split() —— 分割(返回列表)s="苹果,香蕉,橙子"print(s.split(",")) # ['苹果', '香蕉', '橙子']s="a b c d"print(s.split()) # ['a', 'b', 'c', 'd']
s="Hello World"# 大小写转换print(s.upper()) # HELLO WORLD 全转大写print(s.lower()) # hello world 全转小写print(s.title()) # Hello World 单词首字母大写print(s.capitalize()) # Hello world 首字母大写# 大小写判断print(s.isupper()) # Falseprint(s.islower()) # Falseprint(s.istitle()) # False
s=" Hello World "# 去除空格print(s.strip()) # Hello World(去除两端空格)print(s.lstrip()) # Hello World (去除左边空格)print(s.rstrip()) # Hello World(去除右边空格)# 判断是否全是空白print(s.isspace()) # Falseprint(" ".isspace()) # True
# 方法一:f-string(推荐)name="Jerry"age=18print(f"我叫{name},今年{age}岁") # 我叫Jerry,今年18岁# 方法二:format()print("我叫{},今年{}岁".format(name, age))# 方法三:% 格式化print("我叫%s,今年%d岁"% (name, age))
这个在之前的文章中提到过:【Python 干货】3 种字符串格式化方法,f-stringyyds!# 用 + 号s1="Hello"s2="World"print(s1+s2) # HelloWorld# 用 join()words= ["苹果", "香蕉", "橙子"]print(",".join(words)) # 苹果,香蕉,橙子,使用,连接print("-".join(words)) # 苹果-香蕉-橙子,使用-连接
s="Python"print(s*3) # PythonPythonPythonprint("-"*20) # -------------------- 重复20遍
# 场景:处理用户输入的名字name=" jerry "# 1. 去除空格name=name.strip()print(name) # jerry# 2. 首字母大写name=name.title()print(name) # Jerry# 3. 检查是否有效if len(name) <2:print("名字太短")elif not name.isalpha():print("名字不能包含数字")else:print(f"有效名字: {name}")
# 统计一句话中每个字符出现几次text="hello world"# 用字典统计count= {}forcharintext:ifchar!=" ": # 跳过空格count[char] =count.get(char, 0) +1print(count)# {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1}
| 需求 | 用什么 |
|---|---|
| 查字串在不在 | in |
| 查位置 | find() / index() |
| 替换 | replace() |
| 分割 | split() |
| 合并 | join() |
| 开头/结尾判断 | startswith() / endswith() |
| 大小写 | upper() / lower() |
| 去空格 | strip() |
| 格式化 | f-string |
| 切片 | s[0:3] |
日常开发中,字符串操作特别频繁:
处理用户输入
读写文件
爬虫抓数据
写日志
今天的内容:
字符串创建方式
索引和切片
常用操作(查找、替换、分割、大小写)
字符串格式化
实战案例
下篇打算写 函数,教你如何封装自己的代码。
关注「AI 学习成长记」,我踩过的坑你别再踩。