当前位置: 首页 > web >正文

Python语法系列博客 · 第6期[特殊字符] 文件读写与文本处理基础

上一期小练习解答(第5期回顾)

✅ 练习1:字符串反转模块 string_tools.py
# string_tools.py
def reverse_string(s):return s[::-1]

调用:

import string_tools
print(string_tools.reverse_string("Hello"))  # 输出 "olleH"
✅ 练习2:创建包 my_math

目录结构:

my_math/
├── __init__.py
├── basic.py
└── advanced.py


my_math/basic.py

def add(a, b):return a + b

 my_math/advanced.py

import mathdef sqrt(x):return math.sqrt(x)

调用方式:

from my_math import basic, advanced
print(basic.add(2, 3))       # 输出 5
print(advanced.sqrt(16))     # 输出 4.0

✅ 练习3:随机验证码

import random
import stringdef generate_code(length=6):chars = string.ascii_letters + string.digitsreturn ''.join(random.choice(chars) for _ in range(length))print(generate_code())  # 示例输出:a8B2kZ

 

本期主题:文件操作与文本处理


🟦 6.1 打开文件

Python 使用内置的 open() 函数来打开文件。

f = open("example.txt", "r")  # 读取模式

常见模式:

模式含义
'r'只读(默认)
'w'写入(会清空原文件)
'a'追加
'b'二进制模式
'+'读写模式

6.2 读取文件内容

f = open("example.txt", "r")
content = f.read()
print(content)
f.close()

✅ 更推荐的写法:使用 with 自动关闭文件

with open("example.txt", "r") as f:content = f.read()print(content)

其他读取方式:

f.readline()      # 读取一行
f.readlines()     # 读取所有行,返回列表

 6.3 写入文件

with open("output.txt", "w") as f:f.write("Hello, Python!\n")f.write("Let's write some text.\n")

注意:如果文件存在,"w" 模式会清空原文件内容。

6.4 文本处理技巧

✅ 字符串切片
text = "Hello, Python"
print(text[7:])   # 输出 Python

 ✅ 字符串替换

text = "I like apple"
new_text = text.replace("apple", "banana")
print(new_text)  # I like banana
✅ 拆分和合并
s = "apple,banana,grape"
lst = s.split(",")  # ['apple', 'banana', 'grape']
joined = "-".join(lst)
print(joined)  # apple-banana-grape

✅ 去除空白

s = "  hello \n"
print(s.strip())  # 输出 "hello"

附加:处理中文文件

with open("cn.txt", "r", encoding="utf-8") as f:content = f.read()print(content)
with open("cn_out.txt", "w", encoding="utf-8") as f:f.write("你好,世界")

本期小练习

  1. 写一个程序,读取文件 data.txt,并统计文件中总共有多少行。

  2. 写一个程序,读取文件中的每一行,并将其反转后写入到 reversed.txt 文件中。

  3. 写一个程序,从一个包含姓名的文件中筛选出所有以 "A" 开头的名字,写入 a_names.txt

小结

这一期我们学习了:

  • 文件的打开、读取、写入

  • with 的使用

  • 文本处理中的字符串操作

  • 编码问题的处理方法

你现在可以开始处理文本文件、做一些简单的文本清洗、数据预处理任务了!

第7期预告:

下一期我们将探讨:

  • 列表推导式和字典推导式

  • 更优雅地构造数据结构

  • 实际例子演练:快速处理文本数据

 

 

 

 

 

 

 

 

http://www.xdnf.cn/news/449.html

相关文章:

  • JAVA:Spring Boot 集成 Caffeine 实现本地缓存的技术博客
  • 使用Redis5.X部署一个集群
  • 【PCIE配置空间】
  • 【FFmpeg从入门到精通】第三章-FFmpeg转封装
  • Android TTY设备调用流程和简单分析
  • verilog float mult
  • 九方前端面试
  • Kubernetes控制平面组件:API Server详解(二)
  • TDOA解算——牛顿迭代法|以4个基站的三维空间下TDOA定位为背景,使用牛顿迭代法解算。附完整代码,订阅专栏后可复制粘贴
  • 前端面试宝典---参数解构+默认值的面试题
  • 2025.04.19【Spider】| 蜘蛛图绘制技巧精解
  • 杨校老师课堂之C++入门练习题梳理
  • 大数据建模与评估
  • 【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现
  • 备份jenkins
  • mysql控制单表数据存储及单实例表创建
  • MCP是什么?为什么突然那么火?
  • Ubuntu开启自启动PostgreSQL读取HDD失败处理思路
  • 动态规划经典例题:最长单调递增子序列、完全背包、二维背包、数字三角形硬币找零
  • Linux Privilege Escalation: LD_PRELOAD
  • 实战设计模式之备忘录模式
  • Python爬虫实战:获取B站查询数据
  • 【T型三电平仿真】SVPWM调制
  • stack和queue的使用和模拟实现
  • 【Linux】线程ID、线程管理、与线程互斥
  • 【Hot100】 73. 矩阵置零
  • 红帽RHEL与国产Linux系统对比:技术、生态与自主可控的博弈
  • 深入理解 Java 多线程:锁策略与线程安全
  • uniapp-x 二维码生成
  • AI速读 Seed-Thinking-v1.5:大模型推理的新飞跃