Кажется, вы хотите разделить файл.
Вариант 1 : Да, вы можете сделать это с помощью itertools.islice
.Сами строки могут быть разделены с помощью модуля csv
.
Дано
Пример файла с разделителями табуляции test.txt
:
# test.txt
a 0 0 0 0 2 2 2 2 2
b 0 2 2 2 0 0 0 0 1
c 0 2 2 2 0 0 0 0 1
d 0 0 0 0 2 2 2 2 2
e 0 2 2 2 0 0 0 0 1
f 0 2 2 2 0 0 0 0 1
g 0 0 0 0 2 2 2 2 2
h 0 2 2 2 0 0 0 0 1
i 0 2 2 2 0 0 0 0 1
>>> import csv
>>> import itertools as it
>>> fpath = "./test.txt"
Код
Мы реализуем генератор , который может читать файл и безошибочно выводить его строки:
>>> def read_file(filepath):
... with open(filepath, "r") as f:
... reader = csv.reader(f, delimiter="\t")
... for row in reader:
... yield row
Демо
Теперь мы читаем файл и нарезаем несколько строк, например 5
.Оставшиеся lines
содержат остальную часть файла:
>>> lines = read_file(fpath)
>>> top = list(it.islice(lines, 5))
>>> bot = list(lines)
>>> top
[['a', '0', '0', '0', '0', '2', '2', '2', '2', '2'],
['b', '0', '2', '2', '2', '0', '0', '0', '0', '1'],
['c', '0', '2', '2', '2', '0', '0', '0', '0', '1'],
['d', '0', '0', '0', '0', '2', '2', '2', '2', '2'],
['e', '0', '2', '2', '2', '0', '0', '0', '0', '1']]
>>> bot
[['f', '0', '2', '2', '2', '0', '0', '0', '0', '1'],
['g', '0', '0', '0', '0', '2', '2', '2', '2', '2'],
['h', '0', '2', '2', '2', '0', '0', '0', '0', '1'],
['i', '0', '2', '2', '2', '0', '0', '0', '0', '1']]
См. Также больше о разборе с csv
.
Опция2 : В качестве альтернативы рассмотрим pandas
, стороннюю библиотеку.
Демонстрация
>>> import pandas as pd
>>> df = pd.read_csv(fpath, delimiter="\t", header=None)
>>> top = df.iloc[:5, :]
>>> bot = df.iloc[5:, :]
>>> top
0 1 2 3 4 5 6 7 8 9
0 a 0 0 0 0 2 2 2 2 2
1 b 0 2 2 2 0 0 0 0 1
2 c 0 2 2 2 0 0 0 0 1
3 d 0 0 0 0 2 2 2 2 2
4 e 0 2 2 2 0 0 0 0 1
>>> bot
0 1 2 3 4 5 6 7 8 9
5 f 0 2 2 2 0 0 0 0 1
6 g 0 0 0 0 2 2 2 2 2
7 h 0 2 2 2 0 0 0 0 1
8 i 0 2 2 2 0 0 0 0 1
См. Также учебник на выбор с pandas
.