2026-09-23
Python 入门系列(九):字符串与文件——处理真实数据
字符串的八般武艺、f-string 格式化神器,用 with open 读写文件让程序拥有"长期记忆",完成词频统计进阶练习。
字符串与文件:处理真实数据
预计学习时间:55 分钟 · 本系列第 9 / 10 课
一、数据从哪来,到哪去?
前几课的数据都是代码里写死的。真实世界里,数据藏在字符串(网页、消息、日志)和文件(txt、csv、配置文件)里。这一课学两件事:把字符串"揉碎了用",把数据"存下来"。
二、字符串常用方法:八般武艺
s = " Hello, Python! "
print(s.strip()) # 去两端空格 → "Hello, Python!"
print(s.upper()) # 全大写
print(s.lower()) # 全小写
print(s.replace("Python", "World")) # 替换
print(s.count("l")) # 统计 l 出现几次
print("py" in s.lower()) # 判断包含(注意大小写要先统一)
csv_line = "老魏,18,男"
parts = csv_line.split(",") # 切开 → ['老魏', '18', '男']
joined = " | ".join(parts) # 拼回 → 老魏 | 18 | 男
字符串是不可变的!所有方法都不改原字符串,而是返回新字符串。想保留结果必须接住:s = s.strip()。
三、f-string:字符串格式化的现代写法
name, age = "老魏", 18
price = 1234.5678
print(f"{name} 今年 {age} 岁") # 变量直接嵌进去
print(f"总价:{price:.2f} 元") # .2f = 保留两位小数
print(f"明年 {age + 1} 岁") # 括号里可以写表达式
print(f"{name:>10}") # 右对齐占10格,做表格很有用
老魏 今年 18 岁
总价:1234.57 元
明年 19 岁
老魏
四、文件操作:程序的记忆延伸
变量随程序关闭就消失,文件才能长久保存。标准姿势用 with open(...),它会自动帮你关好文件:
# 写文件("w" 模式:覆盖写入)
with open("diary.txt", "w", encoding="utf-8") as f:
f.write("2026-09-23 晴\n")
f.write("今天学会了文件操作!\n")
# 追加("a" 模式:接着写,不覆盖)
with open("diary.txt", "a", encoding="utf-8") as f:
f.write("2026-09-24 又写了一篇\n")
# 读文件("r" 模式)
with open("diary.txt", "r", encoding="utf-8") as f:
for line in f: # 一行一行读,文件再大也不怕
print(line.strip()) # strip 去掉行尾换行符
2026-09-23 晴
今天学会了文件操作!
2026-09-24 又写了一篇
三种模式速记:
"r"= read 读(文件不存在会报错)"w"= write 写(清空重写!小心覆盖掉重要文件)"a"= append 追加(在末尾接着写,最安全)
Windows 用户务必写 encoding="utf-8",否则中文可能变成乱码。
程序与文件的数据流:
┌────────────────────┐ write() 写入 ──► ┌──────────────────┐
│ Python 程序(内存) │ │ diary.txt(硬盘) │
│ 关机就没,临时记忆 │ ◄── read() 读出 │ 永久保存,长期记忆 │
└────────────────────┘ └──────────────────┘
五、实战:记事小本本
while True:
note = input("记点什么(直接回车结束):")
if note == "":
break
with open("notes.txt", "a", encoding="utf-8") as f:
f.write(note + "\n")
print("--- 你记过的内容 ---")
with open("notes.txt", "r", encoding="utf-8") as f:
print(f.read())
六、避坑指南
- ❌ 用
"w"打开已有文件 → 原内容瞬间清空。想保留请用"a" - ❌ 读出来每行末尾有
\n→ 用strip()去掉 - ❌ 忘了 encoding → Windows 下中文乱码
- ❌ 字符串方法没接住返回值:
s.strip()单独一行什么都没发生,要s = s.strip()
七、动手练习
练习:词频统计进阶版。读一个 txt 文件(可以自己先写几段英文进去),统计出现频率最高的 5 个单词。
with open("article.txt", "r", encoding="utf-8") as f:
text = f.read().lower()
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1 # get 带默认值的计数技巧
for word, n in sorted(counts.items(), key=lambda x: -x[1])[:5]:
print(f"{word}: {n} 次")
新知识:sorted(..., key=lambda x: -x[1]) 按"次数"从大到小排序,[:5] 取前 5 个——列表切片在这里又用上了!
下一课是毕业课:异常处理 + 综合项目,把 9 课知识全部串起来!