Взятие определенного столбца для каждой строки в текстовом файле Python - PullRequest
1 голос
/ 10 марта 2019

У меня есть два текстовых файла.Первый содержит число для каждой строки, например:

22
15
32
53
.
.

, а другой файл содержит 20 непрерывных чисел для каждой строки, например:

0.1 2.3 4.5 .... 5.4
3.2 77.4 2.1 .... 8.1
....
.
.

В соответствии с заданным номером в первойTXT я хочу отделить другие файлы.Например, в первом txt для первой строки у меня есть 22, это означает, что я возьму первую строку с 20 столбцами и вторую строку с двумя столбцами, а другие столбцы второй строки я удалю.Затем я посмотрю вторую строку первого txt (это 15), это означает, что я возьму 15 столбцов из третьей строки другого файла и другие столбцы третьей строки, которые я удалю, и так далее.Как я могу это сделать?

with open ('numbers.txt', 'r') as f:
with open ('contiuousNumbers.txt', 'r') as f2:
with open ('results.txt', 'w') as fOut:
   for line in f:
   ...

Спасибо.

1 Ответ

1 голос
/ 10 марта 2019

Для числа в каждой строке, которое вы перебираете в первом файле, сделайте это число целевым значением для чтения, чтобы вы могли использовать цикл while, чтобы продолжать использовать next во втором объекте файла для чтения чисел и уменьшайте число чисел от суммы до тех пор, пока сумма не достигнет 0. Используйте меньшее число суммы и количество чисел, чтобы разделить числа так, чтобы вы вывели только запрошенное число чисел:

for line in f:
    output = []
    total = int(line)
    while total > 0:
        try:
            items = next(f2).split()
            output.extend(items[:min(total, len(items))])
            total -= len(items)
        except StopIteration:
            break
    fOut.write(' '.join(output) + '\n')

так, что дан первый файл с:

3
6
1
5

и второй файл с:

2 5
3 7
2 1
3 6
7 3
2 2
9 1
3 4
8 7
1 2
3 8

выходной файл будет иметь:

2 5 3
2 1 3 6 7 3
2
9 1 3 4 8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...