【问题标题】:How can I read a tsv file with irregular line break如何读取具有不规则换行符的 tsv 文件
【发布时间】:2019-07-06 10:15:29
【问题描述】:

如何读取不同长度行的数据文件? 我正在尝试加载一个 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
...

【问题讨论】:

  • 这很奇怪。更常见的是换行符嵌入到可能出现问题的字段中。但在这种情况下,解决它的正确方法是控制 csv 文件包含引用或转义字符的位置。

标签: python-3.x csv


【解决方案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=[]

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2018-03-21
    • 2021-12-10
    • 2021-12-28
    相关资源
    最近更新 更多