无法从.txt文件中分隔列

时间:2017-11-08 10:10:11

标签: python-2.7

我有一个大文本文件(> 10k行),如下所示:

"t" \t "cell.id" \t "c" \t "age" \t "cell.volume" 0 \t 1 \t 2 \t 0 \t 1 1 \t 1 \t 2 \t 1 \t 1

\t是将值彼此分开的选项卡。 我想在列表中使用第1列(“cell.id”)和第2列(“c”),如下所示:

"cell.id" "c" 1 2 1 2 ... 6000 2

所以我可以在循环中使用它们,我可以将"cell.id""c"相关联,并检查一个"c"的{​​{1}}是否与一个"cell.id"相似另一个。

无论我尝试什么,我似乎都无法做到这一点。我尝试过使用numpy,dataframe,csv-function和其他一些东西。出于某种原因

rawtext = 'location/file.txt' growth = rawtext.splitlines()

接着是

len(growth)

只给我值1,而我预计会有一个非常大的数字。我是python的新手,并且不知道如何解决这个问题。

我还需要能够在以后将其交叉引用到另一个列表中。

1 个答案:

答案 0 :(得分:0)

您可以使用csv.readercsv.DictReader并将分隔符设置为\t

test.csv

"t" "cell.id"   "c" "age"   "cell.volume"
0   1   2   0   1
1   1   2   1   1

然后:

import csv

with open('test.csv') as f:
    reader = csv.DictReader(f, delimiter='\t')
    for line in reader:
        print(line)

#  {'cell.volume': '1', 'age': '0', 't': '0', 'cell.id': '1', 'c': '2'}
#  {'cell.volume': '1', 'age': '1', 't': '1', 'cell.id': '1', 'c': '2'}

如果使用csv.DictReader,您可以看到输出是一个字典列表:每一行都表示为字典,每个键值对都是标题及其各自的值。

您也可以使用pandas。同样,这里的关键是将\t设置为分隔符:

import pandas as pd

df = pd.read_csv('test.csv', delimiter='\t')

print(df)

#        t  cell.id  c  age  cell.volume
#     0  0        1  2    0            1
#     1  1        1  2    1            1


重要如果您的文件包含文字\t,则会按'\t' 字面解析而不是标签。您需要实际按下标签键。