如何读取带有不规则换行符的tsv文件

时间:2019-07-06 10:15:29

标签: python-3.x csv

如何读取具有不同长度的行的数据文件? 我正在尝试加载tsv(制表符分隔)文件,每行应包含19个属性。但是某些行具有4个属性,而下一行具有其他属性。 每条记录具有全部19个属性,但它们只有不规则的换行符。 该文件如何处理?我想将它们作为数据集存储在表中,然后可以使用iloc获取合适的列表。

我运行了这段代码,但是得到了错误 “错误标记数据。C错误:在32770行中应有16个字段,看到了19个”

import numpy as np
import pandas as pd

dataset = pd.read_csv('data1.tsv',sep="\t",header=None)
T = dataset.iloc[:,8].values

文件就像:

(line1)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
(line2)1 2 3 4 
(line3)5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
(line4)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
...

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,但是..我的代码真的很丑


    import csv
    with open('data1.tsv',newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter='\t')
    dataset=[]
    tmp=[]
    for row in spamreader:
        if len(row)==19:
            dataset.append(row)
        elif len(row)==4:
            tmp=row
        elif len(row)==15:
            tmp.extend(row)
            dataset.append(tmp)
            tmp=[]