我有一个大文本文件(> 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的新手,并且不知道如何解决这个问题。
我还需要能够在以后将其交叉引用到另一个列表中。
答案 0 :(得分:0)
您可以使用csv.reader
或csv.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'
字面解析而不是标签。您需要实际按下标签键。