第一章 · Python 基础

字符串

本节目标

学完这一节,你会知道:

  1. 字符串是什么,为什么文本要放在引号里
  2. 如何用索引和切片取出字符串的一部分
  3. 如何使用常见字符串方法处理文本
  4. 如何用 f-string 拼出更自然的句子
  5. 如何写一个简单的文字清理小工具

字符串是 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("入门", "基础"))

然后继续改:

  1. title 换成你想学习的主题
  2. upper()lower() 试试大小写转换
  3. 判断标题里是否包含 "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  "

要求:

  1. 去掉左右空白
  2. 转成小写
  3. 输出清理后的用户名

练习 2:生成欢迎语

创建两个变量:

  • name
  • course

输出:

你好,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))

小结

这一节你学会了:

  1. 字符串用来保存文本
  2. 索引可以取单个字符,切片可以取一段字符
  3. strip()replace()split()join() 都是常用字符串方法
  4. f-string 可以把变量和表达式放进字符串
  5. 转义字符可以表示换行、制表符和引号

下一节我们会学习数字与运算符。你会用 Python 做计算、比较大小,并理解条件判断里经常出现的真假表达式。

文字处理这件事,马哥建议你多动手揉一揉

字符串就像一段可以被切开、清理、替换的小纸条。索引和切片一开始有点像数格子,数错很正常,电脑不会生气。把标题、用户名、标签这些例子多改几次,你会慢慢摸到文字处理的手感。

讨论 (0)

还没有评论,来抢沙发吧!