【发布时间】:2020-01-06 17:46:34
【问题描述】:
我有一个包含未知数量的 cmets 的文件,后跟一个标题,然后是与数据类型有关的第二行,但对我来说实际上只是垃圾。
# Comment Line
# Another comment -- there could be lots
index value
not wanted
1 10
2 20
通过对 cmets 数量的先验知识(这有点违反 cmets 的想法),可以通过以下方式读取文件
pandas pd.read_csv(fname, header=0, comment='#', skiprows=[3])
不过,就我而言,数字 3 是未知的。我只知道标题是索引 0,不计算 cmets,我知道不需要的行是索引 1,不计算 cmets。 header 按我想要的方式工作,但不是 skiprows。有没有办法利用这些信息轻松读取文件? “容易”是指以下内容,即打开文件,计算初步的 cmets,然后读取:
ncomment = 0
crows = []
fname = "sample.csv"
with open(fname,"r") as f:
while f.readline().startswith("#"):
crows.append(ncomment)
ncomment += 1
crows = crows + [ncomment+1]
data = pd.read_csv(fname,header=0,skiprows = crows, index_col=0,delim_whitespace = True)
print(data)
【问题讨论】:
标签: pandas csv parsing comments