如何将.dat文件按8行数据块合并转换为规范CSV文件?
解决.dat文件转CSV:每8行合并为一行
没问题,你已经迈出了第一步,把数据加载到列表里了!接下来只需要完成分组合并和写入CSV这两个步骤就行,我给你整理了完整的解决方案:
完整代码实现
import csv # 你的文件路径(修正了原代码里的变量名笔误) file_path = 'Downloads/Données.dat' raw_data = [] # 读取并预处理数据:过滤空行,拆分每行内容 with open(file_path, 'r') as f: for line in f: cleaned_line = line.strip() # 跳过空行,避免干扰后续分组 if cleaned_line: raw_data.append(cleaned_line.split()) # 核心步骤:每8行合并成一行 merged_rows = [] # 以步长8遍历数据,每次取一个8行的块 for i in range(0, len(raw_data), 8): # 取出当前块(如果最后一组不足8行也能正常处理) block = raw_data[i:i+8] # 将二维的块展平为一维列表(每个值对应CSV的一列) combined_row = [value for row in block for value in row] merged_rows.append(combined_row) # 写入CSV文件 output_csv = 'merged_data.csv' with open(output_csv, 'w', newline='') as csv_file: # 使用csv模块确保格式规范,避免特殊字符问题 writer = csv.writer(csv_file) writer.writerows(merged_rows)
关键步骤解释
- 预处理数据:加入了空行过滤,避免原文件里的空行导致分组错位,保证数据干净。
- 分组合并:用
range(0, len(raw_data), 8)实现每8行一组的切片,再通过列表推导式把每组的所有值展平成一行,正好对应CSV的一列。 - 写入CSV:使用Python内置的
csv模块,比手动拼接逗号更稳妥,能自动处理潜在的格式问题(比如数据里意外出现的逗号),newline=''参数可以避免Windows系统下生成的CSV出现多余空行。
简化版(不用csv模块)
如果你的数据都是纯数值,不会有逗号之类的特殊字符,也可以直接手动写入:
output_csv = 'merged_data.csv' with open(output_csv, 'w') as f: for row in merged_rows: f.write(','.join(row) + '\n')
内容的提问来源于stack exchange,提问作者ALEXANDRE W.




