我有一个文本文件,其中包含约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]
,我将超出范围。
答案 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操纵功能可将您从列表理解,过滤器等的很多中解放出来。