如何用Python合并文本分类行与数据行并导出为CSV
文本格式转换与CSV导出实现方案
原始输入文本
CCDPA_ABUSE_INCIDENT_CODES 1|CODE|VARCHAR2 (1)|Y 2|DESCR|VARCHAR2 (40)|Y CCDPA_ADULT_PS_INVESTIGATIONS 1|ID|NUMBER (10,0)|Y 2|CCDPACHRAPP_ID|NUMBER (10,0)|Y CCDPA_APPLICANT_ALIASES 1|ID|NUMBER (10,0)|Y 2|CCDPACHRAPP_ID|NUMBER (10,0)|Y
需求
- 将所有以字母开头的行作为前缀,追加到后续数字开头的行前,直到遇到下一个字母开头的行
- 前缀与目标行之间用
|分隔 - 删除原有的字母开头行
- 最终导出为可导入Excel的CSV文件
方案一:直接文本处理(轻量无依赖)
适合仅需完成格式转换的场景,无需安装第三方库,处理速度快:
# 配置文件路径 input_path = "你的输入文件名.txt" output_path = "处理结果.csv" current_prefix = "" processed_lines = [] # 读取并处理每一行 with open(input_path, 'r', encoding='utf-8') as infile: for line in infile: stripped_line = line.strip() if not stripped_line: continue # 跳过空行 if stripped_line[0].isalpha(): current_prefix = stripped_line else: # 拼接前缀与当前行 processed_line = f"{current_prefix}|{stripped_line}" processed_lines.append(processed_line) # 写入结果CSV with open(output_path, 'w', encoding='utf-8') as outfile: outfile.write('\n'.join(processed_lines))
方案二:使用Pandas处理(适合后续数据分析)
如果之后需要对数据做清洗、统计等操作,用Pandas更便捷,能生成结构化数据:
import pandas as pd input_path = "你的输入文件名.txt" output_path = "处理结果_pandas.csv" current_prefix = "" data_rows = [] # 读取原始文本并整理数据 with open(input_path, 'r', encoding='utf-8') as infile: for line in infile: stripped_line = line.strip() if not stripped_line: continue if stripped_line[0].isalpha(): current_prefix = stripped_line else: # 拆分字段并插入前缀 row_fields = stripped_line.split('|') row_fields.insert(0, current_prefix) data_rows.append(row_fields) # 转换为DataFrame并导出CSV df = pd.DataFrame(data_rows) # 导出时指定分隔符为|,Excel导入时可选择该分隔符识别列 df.to_csv(output_path, sep='|', index=False, header=False, encoding='utf-8')
方案选择建议
- 仅需格式转换:选直接文本处理,无依赖、效率高
- 后续需数据分析:选Pandas,提供丰富的数据操作接口
内容的提问来源于stack exchange,提问作者Jack Harris
相关产品推荐
相关产品推荐

