如何用Python提取文本文件指定内容并转换为CSV文件
如何用Python提取文本文件数据并导出为CSV?
嗨,作为Python新手能走到读取文件这一步已经很棒啦!我来帮你搞定把这些分块的文本数据转成结构化CSV的需求。你的文本是按空行分隔数据块,每个块对应一条求职者信息,我们可以按以下步骤实现:
核心思路
- 把整个文件内容按空行分割成独立的求职者信息块
- 逐个解析每个块里的每行数据,转成键值对(比如
"Current job title": "meter engineer") - 把所有键值对收集起来,用Python内置的
csv模块写入CSV文件
完整实现代码
import csv # 1. 读取文件并分割数据块 with open("test.txt", "r") as f: # 读取全部内容,按空行分割成每个求职者的信息块 # strip()去掉首尾可能的空白,split('\n\n')分割空行 blocks = f.read().strip().split('\n\n') # 2. 解析每个数据块,生成字典列表 data_list = [] for block in blocks: # 把当前块按换行分割成每行 lines = block.split('\n') employee_data = {} for line in lines: # 去掉每行首尾的空白(比如换行符) line_clean = line.strip() # 按第一个冒号+空格分割键和值,split(':', 1)避免值里有冒号的情况 key, value = line_clean.split(': ', 1) employee_data[key] = value data_list.append(employee_data) # 3. 写入CSV文件 if data_list: # 用第一个数据块的键作为CSV表头(确保所有列都包含) fieldnames = data_list[0].keys() with open("employee_jobs.csv", "w", newline='', encoding='utf-8') as csvfile: # 创建DictWriter对象,自动按表头写入 writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # 写入表头 writer.writeheader() # 写入所有数据行 writer.writerows(data_list) print("CSV文件生成成功!") else: print("没有读取到有效数据块")
代码解释
with open(...):用上下文管理器操作文件,不用手动关闭,更安全- 分割数据块:
split('\n\n')精准把空行分隔的内容拆成独立块,完美适配你的文本格式 - 解析每行:
split(': ', 1)只分割第一个冒号,避免遇到值里有特殊符号的情况(比如薪资里的£符号完全不影响) - CSV写入:
csv.DictWriter可以直接把字典对应到表头列,不用手动对齐位置,对新手非常友好
测试你的示例数据
运行代码后,生成的employee_jobs.csv会有以下清晰的结构化表格:
| Current job title | Current salary | Experience | Desired location | Desired job title | Desired salary | Job Type |
|---|---|---|---|---|---|---|
| meter engineer | £30,000 | 2 years | Not supplied | smart meter engineer | £30,000 | Permanent |
| dual fuel smart meter engineer | £30,000 | 4 years | Not supplied | Not supplied | £34,999 | Permanent |
这样就完美实现了你要的“每个数据块对应CSV一行,标题对应列”的需求啦~
内容的提问来源于stack exchange,提问作者Marshall10001
相关产品推荐
相关产品推荐

