Python实现TXT转CSV:新手求助数据提取方案
把TXT转CSV的Python实现步骤
全程用Python内置工具,不用额外装库,新手也能轻松搞定:
1. 先明确TXT文件结构
从你提供的示例来看,TXT里每行都是「标签: 内容」的格式(比如Case code: 239),不同案例之间用空行分隔。我们要把所有标签提取出来当CSV的表头,每个案例的内容对应成CSV的一行数据。
2. 直接用这段代码实现
每一步都加了注释,照着改路径就行:
import csv # 替换成你的文件路径 txt_file = "你的输入文件.txt" csv_file = "输出结果.csv" cases = [] # 存所有案例的数据 current_case = {} # 临时存当前正在处理的案例 # 读取并解析TXT with open(txt_file, 'r', encoding='utf-8') as f: for line in f: line = line.strip() # 去掉每行前后的空格、换行符 if not line: # 遇到空行,说明当前案例结束 if current_case: cases.append(current_case) current_case = {} continue # 按第一个冒号分割标签和内容(避免内容里有冒号的情况) if ': ' in line: label, value = line.split(': ', 1) current_case[label.strip()] = value.strip() # 处理文件末尾的最后一个案例(可能没有空行收尾) if current_case: cases.append(current_case) # 提取所有表头(包含所有出现过的标签) all_headers = [] for case in cases: for key in case.keys(): if key not in all_headers: all_headers.append(key) # 写入CSV文件 with open(csv_file, 'w', newline='', encoding='utf-8') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=all_headers) writer.writeheader() # 写入表头 writer.writerows(cases) # 写入所有案例数据 print(f"转换完成!CSV文件已保存到 {csv_file}")
3. 特殊情况调整
- 如果案例不是用空行分隔,而是特定符号(比如
---),把if not line:改成if line.startswith('---')就行。 - 要是读取TXT时乱码,把
encoding='utf-8'换成encoding='gbk'或者encoding='utf-8-sig'试试。 - 部分案例缺少某个标签的话,CSV对应的单元格会自动留空,符合表格要求。
4. 验证结果
运行代码后打开生成的CSV,就能看到表头是所有提取的标签,每行对应一个案例的完整数据,和你要的目标效果一致。
内容的提问来源于stack exchange,提问作者Rac
相关产品推荐
相关产品推荐

