如何使用Python将键值对格式的TXT文件转换为标准CSV文件
解决方案
原代码存在的问题
- 没有对每行的
键: 值做正确拆分,错误将冒号、空格替换为单引号,完全偏离数据提取的需求 - 没有分别存储表头(键)和对应值,空列表
s没有被填充任何有效数据 - 文件操作没有做资源释放处理,容易出现文件句柄泄漏
正确实现代码
#!/usr/bin/python # -*- coding:utf-8 -*- import csv headers = [] values = [] # 读取txt键值对文件 with open("in.txt", "r", encoding="utf-8") as f: for line in f: line = line.strip() # 跳过空行 if not line: continue # 按第一个冒号+空格拆分,避免值内部存在冒号时拆分错误 key, value = line.split(": ", 1) headers.append(key) values.append(value) # 写入CSV文件 with open("out.csv", "w", encoding="utf-8", newline="") as f: # QUOTE_ALL参数会自动为所有字段包裹双引号 csvex = csv.writer(f, quoting=csv.QUOTE_ALL) csvex.writerow(headers) csvex.writerow(values)
说明
- 拆分字符串时指定最大拆分次数为1,兼容值内部存在冒号的场景
- 写CSV时添加
newline=""是Windows平台兼容配置,可避免生成的CSV出现多余空行 - 使用
with上下文管理器自动管理文件句柄,无需手动调用close()释放资源
内容的提问来源于stack exchange,提问作者testFreak
相关产品推荐
相关产品推荐

