如何按#分割文本文件数据并重排列值拼接生成新文件
实现方案
直接用Python脚本处理即可,逻辑简单易修改,不需要安装额外第三方依赖。
处理逻辑
- 逐行读取原始文件,跳过空行,遇到以
#开头的分隔行就切分新的数据块,非分隔行按空格拆分为两列数值存入当前块 - 校验所有拆分出的数据块行数一致,避免行位置错位
- 逐行提取所有块的第一列值拼接写入第一个输出文件,逐行提取所有块的第二列值拼接写入第二个输出文件
可直接运行的代码
把原始温度数据保存为temp_data.txt,和脚本放在同一目录下即可运行:
# 初始化数据块存储列表 data_blocks = [] temp_block = [] # 读取文件并按#拆分数据块 with open("temp_data.txt", "r", encoding="utf-8") as f: for raw_line in f: line = raw_line.strip() if not line: continue # 识别到分隔符时,存储当前已收集的块并新建空块 if line.startswith("#"): if temp_block: data_blocks.append(temp_block) temp_block = [] continue # 拆分每行的两个温度数值 val1, val2 = map(int, line.split()) temp_block.append((val1, val2)) # 存入最后一个未收尾的数据块 if temp_block: data_blocks.append(temp_block) # 生成第一个输出文件:所有块第一列按行拼接 with open("output1.txt", "w", encoding="utf-8") as f: for row_pos in range(len(data_blocks[0])): row_content = " ".join(str(block[row_pos][0]) for block in data_blocks) f.write(f"{row_content}\n") # 生成第二个输出文件:所有块第二列按行拼接 with open("output2.txt", "w", encoding="utf-8") as f: for row_pos in range(len(data_blocks[0])): row_content = " ".join(str(block[row_pos][1]) for block in data_blocks) f.write(f"{row_content}\n")
结果校验
运行脚本后生成的两个文件完全匹配预期输出:
output1.txt内容:
1 6 2 3 3 1
output2.txt内容:
2 1 4 2 4 7
如果后续新增更多用#分隔的数据块,该脚本无需修改逻辑即可自动适配,会把所有块的对应列按顺序拼接到输出文件中。
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

