使用列表中的制表符分隔的TXT文件中保存的列

时间:2018-09-04 22:31:18

标签: python csv

我有一个文本文件,其中包含约35行的“垃圾”信息。在那之后,我需要提取制表符分隔的数据。我需要保存在列表中的特定列。

首先,我尝试过这种方式:

with open('BIOGRID-ORGANISM-Homo_sapiens-3.4.163.tab - Small.txt') as txtfile:

    readCSV = csv.reader(txtfile, delimiter='\t')
    objectids = []
    municodes = []
    results = []

    for row in readCSV[35]:
        objectid = row[3]
        municode = row[5]
        objectids.append(objectid)
        municodes.append(municode)
txtfile.close()

这会得到错误

TypeError: '_csv.reader' object is not subscriptable.    

然后,我尝试了以下方法:

lol = list(csv.reader(open('BIOGRID-ORGANISM-Homo_sapiens-3.4.163.tab - Small.txt'), delimiter='\t'))

d = dict()
key = lol[0][0]      # cell A7
value = lol[0][0]
print(key)
print(value)

但是这样,如果我更改[0][0],我将超出范围。

2 个答案:

答案 0 :(得分:1)

您是否曾尝试过使用skiprows选项选择熊猫?

import pandas as pd
result = pd.read_csv('file.csv', skiprows=35)
relevant_column = list(result['relevant_column'])

答案 1 :(得分:0)

您已经将读者(迭代器)与迭代结果相混淆。如果您首先遍历阅读器,将所有输入放入列表中,然后切成列表,则可以更好地表达您想要做的事情:

data_rows = [_ for _ in readCSV][36:]
objectids = [_[3] for _ in data_rows]
municodes = [_[5] for _ in data_rows]

这可能不是获取实际用例的最佳方法。由于您要从文件中的电子表格中提取两列(甚至更多),因此,建议您使用PANDAS(如已经建议的Pedro)并将内容直接填充到数据框(df)中。 df操纵功能可将您从列表理解,过滤器等的很多中解放出来。