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

周末学习笔记:Python文件操作(结构化数据转换与文件处理)

目录

一、任务目标

二、实现步骤与代码解析

2.1 数据准备阶段

关键点解析:

2.2 数据转换核心代码 

三、关键技术解析

3.1 字符串处理方法

3.2 数据结构转换 

3.3 文件写入技巧 

四、执行结果验证

输入文件t1.txt内容:

输出文件t2.txt内容:

五、自我提升建议

六、学习总结

避坑指南:

 学习资源推荐:


一、任务目标

将原始数据文件t1.txt中的逗号分隔数据转换为字典列表格式,并输出到新文件t2.txt。通过本案例可以学习:

  • 文件读写操作

  • 字符串处理方法

  • 数据结构转换

  • 异常处理基础

二、实现步骤与代码解析

2.1 数据准备阶段

# 创建并写入原始数据文件
with open(r"D:\t1.txt", "w", encoding="utf-8") as file:
    file.write("""1,吴彦祖,22,13812346543,警察
2,金城武,23,13698763214,学生
3,彭于晏,18,13565478921,运动员""")

关键点解析

  1. 使用with语句自动管理文件资源

  2. encoding="utf-8"确保中文正常存储

  3. 三引号字符串保持数据格式清晰

2.2 数据转换核心代码 

def convert_file(input_path, output_path):
    result = []
    
    try:
        with open(input_path, "r", encoding="utf-8") as f:
            for line in f:
                # 数据清洗与分割
                clean_line = line.strip()
                if not clean_line:  # 跳过空行
                    continue
                
                # 数据结构转换
                parts = clean_line.split(',')
                if len(parts) != 5:  # 数据有效性检查
                    print(f"格式错误行: {line}")
                    continue
                    
                data_dict = {
                    'id': parts[0],
                    'name': parts[1],
                    'age': parts[2],
                    'phone': parts[3],
                    'job': parts[4]
                }
                result.append(data_dict)
                
        # 结果写入文件
        with open(output_path, "w", encoding="utf-8") as out_f:
            out_f.write(str(result))
            
    except FileNotFoundError:
        print("输入文件不存在")
    except Exception as e:
        print(f"发生未知错误: {str(e)}")

# 执行转换
convert_file(r"D:\t1.txt", r"D:\t2.txt")

三、关键技术解析

3.1 字符串处理方法

line.strip().split(',')
  • strip(): 去除首尾空白符和换行符

  • split(',')): 按逗号分割字符串

  • 组合使用实现数据清洗与分割

3.2 数据结构转换 

data_dict = {
    'id': parts[0],
    'name': parts[1],
    # ...其他字段...
}
  • 通过列表索引映射字段

  • 字典键名明确数据含义

  • 列表存储保持顺序性

3.3 文件写入技巧 

str(result)  # 直接转换数据结构
  • 利用Python的自动类型转换

  • 保持数据结构可视化

  • 适合简单数据持久化

四、执行结果验证

输入文件t1.txt内容:

1,吴彦祖,22,13812346543,警察
2,金城武,23,13698763214,学生
3,彭于晏,18,13565478921,运动员

输出文件t2.txt内容:

[
    {'id': '1', 'name': '吴彦祖', 'age': '22', 'phone': '13812346543', 'job': '警察'},
    {'id': '2', 'name': '金城武', 'age': '23', 'phone': '13698763214', 'job': '学生'},
    {'id': '3', 'name': '彭于晏', 'age': '18', 'phone': '13565478921', 'job': '运动员'}
]

五、自我提升建议

  1. 数据增强:添加字段验证(如手机号格式检查)

  2. 格式优化:使用JSON格式存储代替字符串转换

  3. 性能提升:处理大文件时使用分批读取

  4. 异常完善:增加更具体的异常类型处理

六、学习总结

通过本案例掌握了:

  • 文件操作的安全写法(with语句)

  • 字符串处理的核心方法

  • 字典列表的数据结构应用

  • 基础异常处理的使用场景

避坑指南

  1. 文件路径使用原始字符串(r"")

  2. 注意不同操作系统的换行符差异

  3. 中文文件必须指定编码格式

  4. 重要操作添加数据校验

 学习资源推荐


📚 Python官方文件操作文档
🔍 JSON模块使用指南

相关文章:

  • 算法:有一个整数数组,长度为n。她希望通过一系列操作将数组变成一个回文数组。
  • Domain Adaptation领域自适应
  • Java多态课堂练习题
  • ​‌FireCrawl‌爬虫工具​, Craw4ai
  • 算法思想之模拟
  • LaTeX 的pstricks-add宏绘图练习
  • SJ7W5(四角号码7万五千字)取码细则V2
  • AWS Redshift的使用场景及一些常见问题
  • vue+flask+GNN+neo4j图书知识图谱推荐系统
  • 【SQL】COUNT... FILTER 的适用场景
  • 大模型在直肠癌诊疗全流程预测及应用研究报告
  • 已开源!CMU提出NavRL :基于强化学习的无人机自主导航和动态避障新方案
  • Threejs 奇幻几何体:边缘、线框、包围盒大冒险
  • 深入剖析 RocketMQ 中的 MappedFile 技术
  • 使用MCP服务通过自然语言操作数据库(vscode+cline版本)
  • [极客大挑战 2019]PHP 1
  • AI改变生活
  • 苍穹外卖day04
  • JPG同步删除RAW批处理文件
  • Vue ‘v-model‘ directives require the attribute value which is valid as LHS.
  • 神舟二十号载人飞船发射升空
  • 集合多家“最美书店”,松江成立书店联盟“书香满云间”
  • 继加州后,美国又有11州起诉特朗普政府滥用关税政策“违法”
  • 2025航天文化艺术论坛在上海举办
  • 印控克什米尔地区发生针对游客枪击事件,造成至少25人丧生
  • 旁白丨无罪后领到国家赔偿,一位退休教师卸下了“包袱”