如何读取固定宽度空格分隔的dat.txt文件并导入Python?
固定宽度空格分隔dat文件读取解决方案
你之前的写法无效有两个核心原因:
delimiter = 'sp'是无效参数,pandas、numpy的读取接口均不识别该取值- 目标文件属于固定宽度格式(FWF),列与列之间用多个空格分隔,不是普通单分隔符分割的文件,用
read_csv、默认参数的genfromtxt无法正确拆分列,且单列的0/1会被自动识别为独立列,不需要额外配置。
方案1:用pandas读取(推荐)
pandas内置read_fwf接口专门用于读取固定宽度格式文件,可自动推断多空格分隔的列边界:
import pandas as pd file_url = "http://jse.amstat.org/datasets/04cars.dat.txt" # header=None 表示文件无表头,读取后自动给列分配0、1、2...的列名 df = pd.read_fwf(file_url, header=None)
如果需要更精准的列拆分,可以自行传入colspecs参数指定每列的起止位置,避免自动推断出现偏差。
方案2:用numpy的genfromtxt读取
如果需要用numpy读取,将delimiter设为None即可让接口自动按任意数量的空白字符拆分列,搭配dtype=None自动推断每列的数据类型,避免车型名字符串被识别为空值:
import numpy as np file_url = "http://jse.amstat.org/datasets/04cars.dat.txt" data = np.genfromtxt(file_url, delimiter=None, dtype=None, encoding="utf-8")
内容的提问来源于stack exchange,提问作者Luke Hickinbotham
相关产品推荐
相关产品推荐

