字符串
本节目标
学完这一节,你会知道:
- 字符串是什么,为什么文本要放在引号里
- 如何用索引和切片取出字符串的一部分
- 如何使用常见字符串方法处理文本
- 如何用 f-string 拼出更自然的句子
- 如何写一个简单的文字清理小工具
字符串是 Python 里最常见的数据类型之一。名字、消息、文件内容、网页文字,很多数据一开始都是字符串。
先跑一个例子
新建文件 string_demo.py,写入:
name = "小明"
city = "成都"
message = " Python 真有趣! "
print(f"你好,我叫{name},我在{city}学习 Python。")
print(message.strip())
print(message.replace("有趣", "实用"))
运行:
python3 string_demo.py
你会看到:
你好,我叫小明,我在成都学习 Python。
Python 真有趣!
Python 真实用!
这里用到了字符串保存文本、去掉空白、替换文字和 f-string。
什么是字符串?
字符串就是一段文本,通常写在引号里:
name = "小明"
city = '成都'
sentence = "我正在学习 Python"
双引号和单引号都可以,常用哪一种都行。重要的是前后要配对。
如果字符串里本身有引号,可以外面换另一种引号:
text = '他说:"Python 很好学"'
print(text)
索引:取出某一个字符
字符串可以看成一排字符。Python 的索引从 0 开始。
text = "Python小屋"
print(text[0])
print(text[1])
print(text[-1])
输出:
P
y
屋
text[0] 表示第一个字符,text[-1] 表示最后一个字符。
切片:取出一段字符
切片语法是:
字符串[开始位置:结束位置]
注意:结束位置不包含在结果里。
s = "Hello, Python!"
print(s[0:5])
print(s[:5])
print(s[7:])
print(s[-7:-1])
输出:
Hello
Hello
Python!
Python
还可以加步长:
s = "abcdef"
print(s[::2])
print(s[::-1])
输出:
ace
fedcba
[::-1] 是常见的反转字符串写法。
常用字符串方法
方法可以理解成“字符串自己会做的操作”。
去掉空白
text = " hello "
print(text.strip())
print(text.lstrip())
print(text.rstrip())
最常用的是 strip(),它会去掉左右两边的空白。
查找和判断
text = "I love Python"
print("Python" in text)
print(text.find("Python"))
print(text.startswith("I"))
print(text.endswith("on"))
in 判断是否包含,find() 返回第一次出现的位置,找不到会返回 -1。
替换
text = "我喜欢 Java"
new_text = text.replace("Java", "Python")
print(new_text)
输出:
我喜欢 Python
分割和连接
line = "Python,Java,Go"
words = line.split(",")
print(words)
print(" | ".join(words))
输出:
['Python', 'Java', 'Go']
Python | Java | Go
split() 把字符串拆成列表,join() 把列表里的字符串合成一段文本。
f-string:把变量放进字符串
上一节已经见过 f-string:
name = "小明"
age = 18
print(f"{name} 今年 {age} 岁")
输出:
小明 今年 18 岁
f-string 里也可以写简单表达式:
price = 9.9
count = 3
print(f"总价:{price * count} 元")
保留两位小数:
score = 98.456
print(f"成绩:{score:.2f}")
输出:
成绩:98.46
转义字符和原始字符串
有些字符需要用反斜杠表示:
print("第一行\n第二行")
print("姓名\t成绩")
print("他说:\"你好\"")
常见转义字符:
\n:换行\t:制表符\":双引号\\:反斜杠
Windows 路径里经常有反斜杠,可以使用原始字符串:
path = r"C:\Users\mage\Desktop"
print(path)
逐行拆解
再看开头的例子:
message = " Python 真有趣! "
变量 message 保存了一段字符串,左右两边有空格。
print(message.strip())
strip() 去掉左右空格,再输出。
print(message.replace("有趣", "实用"))
replace() 把字符串里的“有趣”替换成“实用”。它不会修改原变量,而是返回一个新的字符串。
自己改一改
把 string_demo.py 改成:
title = " Python 入门教程 "
author = "马哥"
clean_title = title.strip()
print(f"标题:{clean_title}")
print(f"作者:{author}")
print(f"标题长度:{len(clean_title)}")
print(clean_title.replace("入门", "基础"))
然后继续改:
- 把
title换成你想学习的主题 - 用
upper()或lower()试试大小写转换 - 判断标题里是否包含
"Python"
常见错误
1. 字符串忘记加引号
错误写法:
name = 小明
正确写法:
name = "小明"
2. 索引超出范围
text = "abc"
print(text[10])
这会报 IndexError,因为字符串没有第 11 个字符。
3. 把字符串方法写错
text = "hello"
print(text.uper())
正确写法是:
print(text.upper())
方法名拼错会报 AttributeError。
4. 混淆数字字符串和数字
age = "18"
print(age + 1)
字符串和整数不能直接相加。需要先转换:
age = int("18")
print(age + 1)
小练习
练习 1:清理用户名
创建变量:
username = " Mage_Python "
要求:
- 去掉左右空白
- 转成小写
- 输出清理后的用户名
练习 2:生成欢迎语
创建两个变量:
namecourse
输出:
你好,XXX,欢迎学习 YYY!
练习 3:拆分标签
给定:
tags = "python,flask,爬虫,自动化"
用 split() 拆成列表,再用 join() 输出:
python | flask | 爬虫 | 自动化
参考答案
练习 1:
username = " Mage_Python "
clean_name = username.strip().lower()
print(clean_name)
练习 2:
name = "小明"
course = "Python 字符串"
print(f"你好,{name},欢迎学习 {course}!")
练习 3:
tags = "python,flask,爬虫,自动化"
tag_list = tags.split(",")
print(" | ".join(tag_list))
小结
这一节你学会了:
- 字符串用来保存文本
- 索引可以取单个字符,切片可以取一段字符
strip()、replace()、split()、join()都是常用字符串方法- f-string 可以把变量和表达式放进字符串
- 转义字符可以表示换行、制表符和引号
下一节我们会学习数字与运算符。你会用 Python 做计算、比较大小,并理解条件判断里经常出现的真假表达式。
文字处理这件事,马哥建议你多动手揉一揉
字符串就像一段可以被切开、清理、替换的小纸条。索引和切片一开始有点像数格子,数错很正常,电脑不会生气。把标题、用户名、标签这些例子多改几次,你会慢慢摸到文字处理的手感。
还没有评论,来抢沙发吧!