字符串方法与 f-string · Python 从零开始
怎样方便地修改、查找和排版文字?
课程目录为什么需要它
真实的输入很乱:多余的空格、乱七八糟的大小写。输出也要好读:「Ada scored 95 points」,而不是一堆逗号和 +。字符串自带很多清理和查找用的方法 Method,f-string 让排版变得很轻松。
直觉理解
方法就是属于某个值的函数,用点号调用:值.方法()。
| 方法 | 作用 | 例子 |
|---|---|---|
.upper() / .lower() | 转大写 / 小写 | "Hi".upper() → "HI" |
.strip() | 去掉两端的空格 | " hi ".strip() → "hi" |
.replace(a, b) | 把所有 a 换成 b | "cat".replace("c", "b") → "bat" |
.count(x) | x 出现了几次 | "banana".count("a") → 3 |
方法返回的是一个新字符串,原来的字符串不会变(字符串是不可变的 Immutable)。
"an" in "banana" 问的是「里面有没有……」,结果是 True 或 False。
f-string 以 f 开头,把值写在 { } 里:f"{name} is {age}"。花括号里可以写任何表达式:f"{age + 1}"。
定义
方法 Method
A method is a function attached to a value, called with dot notation such as text.upper().方法是附属于某个值的函数,用点号调用,比如 text.upper()。
f-string 格式化字符串
An f-string is a string literal prefixed with f in which expressions inside braces are evaluated and inserted.f-string 是以 f 开头的字符串,花括号里的表达式会被计算并插入到字符串中。
示例
清理乱糟糟的输入
动手试试方法可以连着调用:每一个都作用在上一个的结果上。
msg = " Hello World "
clean = msg.strip().lower()
print(clean)
print(clean.count("o"), "world" in clean)
print(msg)逐步执行
- L2strip() 去掉两端的空格,lower() 再转成小写。
clean = 'hello world' - L4有两个 o;而且包含 "world"。
2 True - L5msg 本身没有变:方法返回的是新字符串。
用 f-string 排版
动手试试对比两行 print:输出一样,但 f-string 更好读。
name = "Ada"
score = 95
print(name + " scored " + str(score) + " points")
print(f"{name} scored {score} points")
print(f"Next time: {score + 5}")逐步执行
- L3用 + 的话,数字要先用 str() 转换。
- L4用 f-string,{score} 会自动插进去。
- L5花括号里可以写任何表达式。
Next time: 100
常见错误
忘了写 f
没有 f 的 "{name}" 会把花括号原样打印出来。要写 f"{name}"。
以为原字符串会变
只写 name.upper() 看不出任何效果。要把结果存起来或打印出来:name = name.upper()。
小测验
1. 这段代码会输出什么?
print("banana".replace("a", "o"))查看答案
答案:A
replace 会替换所有的 "a"。
2. 这段代码会输出什么?
x = 3
print(f"x={x * 2}")查看答案
答案:A
花括号里的表达式会被计算:3 × 2 = 6。
动手练习
3 道练习,分三层:先预测程序的输出,再按新需求改程序,最后从零写一个。代码在浏览器里运行,提交马上判题。
- 预测输出方法实战
准确写出程序的输出。
- 改需求整齐的问候
用户输入的名字带着多余的空格和奇怪的大小写。用
.strip()和.capitalize()(首字母大写,其余小写)清理名字,再用 f-string 打印问候:Hello, Ada! - 从零写大喊并计数
读入一个单词。第一行打印它的全大写形式,第二行打印字母 a 在里面出现了几次(a 和 A 都算)。
本课术语
| 术语 | 中文 | 英文定义 |
|---|---|---|
| Method | 方法 | A function attached to a value, called with a dot. |
| f-string | f-string 格式化字符串 | A string starting with f whose {expressions} are evaluated and inserted. |
| Immutable | 不可变 | Describes values, like strings, that cannot be changed after they are created. |
| in | in 成员运算 | An operator that checks whether a value is contained in another, giving True or False. |