如何用Python提取文本数据并转换为指定CSV格式(保留多词部门名)
解决方法
你之前的代码会把所有空格替换成逗号,自然会拆分带空格的Department字段。要解决这个问题,核心是提前明确字段的位置规则(比如哪些字段是无空格的固定值,哪个位置是带空格的Department),然后针对性拆分。
假设你的文本数据格式是:每行包含「ID、姓名、Department、薪资」四个字段,其中ID、姓名、薪资都是无空格的单个值,Department是中间所有带空格的内容。比如文本内容示例:
101 Alice Team Sports Floor 60000 102 Bob Fitness Equipment 45000 103 Charlie Apparel 55000
以下是对应的Python示例代码,用标准库csv处理更规范,避免手动拼接出错:
import csv # 输入文本文件路径和输出CSV路径 input_txt = "data.txt" output_csv = "result.csv" # 打开文件进行处理 with open(input_txt, 'r', encoding='utf-8') as txt_file, \ open(output_csv, 'w', newline='', encoding='utf-8') as csv_file: # 初始化CSV写入器 writer = csv.writer(csv_file) # 写入表头(如果需要的话) writer.writerow(["ID", "Name", "Department", "Salary"]) # 逐行处理文本文件 for line in txt_file: # 去掉首尾空白字符,然后按空格分割成列表 parts = line.strip().split() if not parts: # 跳过空行 continue # 提取固定位置的字段 emp_id = parts[0] emp_name = parts[1] salary = parts[-1] # 合并中间所有部分作为Department department = ' '.join(parts[2:-1]) # 写入CSV行 writer.writerow([emp_id, emp_name, department, salary])
代码说明
- 用
csv模块写入CSV,自动处理字段的逗号分隔,避免手动拼接可能出现的格式问题 split()默认按任意数量空格分割(包括多个连续空格、制表符),适合处理不规范的空格分隔- 通过
parts[2:-1]提取中间所有元素,再用' '.join()合并,保留Department内部的空格 - 跳过空行,避免处理无效数据
如果你的字段规则不同(比如Department在其他位置),只需要调整提取字段的索引即可。比如如果Department是最后一个字段,其他都是无空格值,那只需要把department = ' '.join(parts[2:]),再根据实际结构调整其他字段的提取逻辑。
内容的提问来源于stack exchange,提问作者Jackie
相关产品推荐
相关产品推荐

