Python如何正确提取无表头、空格分隔的CSV文件中的数据
Python读取空格分隔无表头文本文件的解决方案
以下提供两种常用实现方式,可根据自身需求选择:
方法1:使用内置csv模块(无额外依赖)
适合仅需要基础读取数据的场景,直接指定分隔符为空格即可:
import csv # 替换为你本地的文件路径 file_path = "./data.txt" all_data = [] with open(file_path, "r", encoding="utf-8") as f: # delimiter指定分隔符为空格,skipinitialspace忽略多余的连续空格 csv_reader = csv.reader(f, delimiter=" ", skipinitialspace=True) for row in csv_reader: # 若需要将字段转换为数值类型,可添加下行代码 row = list(map(float, row)) all_data.append(row) # 测试输出前3行数据 print(all_data[:3])
如果需要给字段添加自定义表头,可手动指定列名后转成字典格式:
示例表头定义(可根据实际字段含义修改):时间戳、设备编号、测量值1、测量值2、测量值3
col_names = ["时间戳", "设备编号", "测量值1", "测量值2", "测量值3"] dict_data = [dict(zip(col_names, row)) for row in all_data]
方法2:使用pandas库(适合数据分析场景)
如果后续需要做数值统计、过滤、导出等操作,用pandas读取更高效:
import pandas as pd # 替换为你本地的文件路径 file_path = "./data.txt" # sep="\s+"匹配任意数量的空白字符作为分隔符,header=None表示文件无表头 df = pd.read_csv(file_path, sep="\s+", header=None) # 手动设置列名(可按需修改) df.columns = ["时间戳", "设备编号", "测量值1", "测量值2", "测量值3"] # 查看前5行数据 print(df.head())
两种方案选择建议
- 仅需要基础读取、无数据分析需求,优先选内置csv模块,无需安装第三方依赖
- 需要后续数据处理、计算操作,优先选pandas,代码更简洁处理效率更高
内容的提问来源于stack exchange,提问作者Clem
相关产品推荐
相关产品推荐

