Форум сайта python.su
0
Доброго времени суток!
Подскажите как на python3 сделать скрипт задача которого в следующем:
Есть xls файл, который состоит из трёх колонок. Во второй колонке содержатся числа, которые идут от 1 до N, затем снова от 1 до M и т.д., и повторяется это количество раз n, пока не закончатся все строки в файле.
Создаем первый файл для записи, в который записываем все три колонки, где вторая колонка содержит от 1 до N, далее создаем второй файл для записи, в который записываем все три колонки, где вторая колонка содержит от 1 до M, и т.д. Создаем количество файлов для записи равное n.
Текущий файл:
t j No
1 1 3
2 2 7
3 3 9
4 4 12
5 5 11
6 6 9
7 7 4
8 8 9
9 9 10
10 10 10
11 11 7
12 12 7
13 13 4
14 14 12
15 15 5
16 16 8
17 1 0
18 2 0
19 3 0
20 4 0
21 1 0
22 2 0
23 3 0
Должно выглядеть так в отдельных файлах:
В первый файл записывается:
t j No
1 1 3
2 2 7
3 3 9
4 4 12
5 5 11
6 6 9
7 7 4
8 8 9
9 9 10
10 10 10
11 11 7
12 12 7
13 13 4
14 14 12
15 15 5
16 16 8
Во второй файл записывается:
t j No
17 1 0
18 2 0
19 3 0
20 4 0
В третий файл записывается:
t j No
21 1 0
22 2 0
23 3 0
Надеюсь, что максимально подробно объяснила.
Заранее всем спасибо!
Офлайн
6
Перебираешь в цикле все строки.
Проверяешь 2 колонку. Если она равна 1 - создаёшь и пишешь в новый файл.
Если нет, пишешь в в последний открытый.
Отредактировано Vintets (Сен. 13, 2017 15:16:03)
Офлайн
253
Можно делать почти буквально если использовать numpy.
Сначала ручками из exel выгружаете данные в текстовый файл в формате который вы использовали на форуме.
import numpy as np data = np.loadtxt("a.txt") # чтение файла pos = (np.diff(data[:,1])<0).nonzero()[0] # определение позиций где резать for i,d in enumerate(np.split(data, pos, axis =0)): # разрезание и запись np.savetxt(str(i),d)
Отредактировано doza_and (Сен. 13, 2017 21:32:46)
Офлайн