如何用Python将文本文件中按行分布的企业数据转为列格式?
将行式企业数据转换为列格式的Python方案
你可以通过Python轻松实现这种格式转换,核心思路是将每行的企业数据按组分割,再拼接成列格式的单行。以下提供两种适配不同场景的实现方案:
方案一:固定行数分组(适合每组行数统一的场景)
如果每个企业的信息固定占12行(如你的示例),可以直接按固定行数分割处理:
# 读取原始文本文件,清理空行和首尾空白 with open("companies.txt", "r", encoding="utf-8") as f: raw_lines = [line.strip() for line in f if line.strip()] # 每组12行对应一个企业的完整数据 group_size = 12 result = [] # 按组遍历处理 for idx in range(0, len(raw_lines), group_size): company_data = raw_lines[idx:idx+group_size] # 拼接为带分隔符的单行,<30表示左对齐占30字符(可选,用于美化对齐) formatted_line = " | ".join(f"{item:<30}" for item in company_data) result.append(formatted_line) # 将结果写入新文件 with open("formatted_companies.txt", "w", encoding="utf-8") as f: f.write("\n".join(result))
方案二:按起始标识分组(适合行数不固定的场景)
如果企业数据的行数不固定,但每组都以661.这类数字加句号的行作为起始,可以通过识别起始行来动态分组:
# 读取并清理原始数据 with open("companies.txt", "r", encoding="utf-8") as f: raw_lines = [line.strip() for line in f if line.strip()] result = [] current_company = [] for line in raw_lines: # 判断是否为新企业的起始行(数字结尾带句号) if line.endswith(".") and line[:-1].isdigit(): # 若已有未保存的企业数据,先拼接保存 if current_company: formatted_line = " | ".join(f"{item:<30}" for item in current_company) result.append(formatted_line) # 初始化新企业的数据列表 current_company = [line] else: current_company.append(line) # 处理最后一组企业数据 if current_company: formatted_line = " | ".join(f"{item:<30}" for item in current_company) result.append(formatted_line) # 写入结果文件 with open("formatted_companies.txt", "w", encoding="utf-8") as f: f.write("\n".join(result))
说明
- 两种方案都会自动过滤原始文件中的空行和多余空白,保证数据整洁。
- 代码中的
{item:<30}是可选的格式化参数,用于让每列左对齐并占据30个字符宽度,使输出更美观;如果不需要对齐,直接用" | ".join(company_data)即可。 - 执行代码后,会生成一个名为
formatted_companies.txt的新文件,内容就是你需要的列格式数据。
内容的提问来源于stack exchange,提问作者ADX
相关产品推荐
相关产品推荐

