Печать строки в файле до пустой строки - PullRequest
0 голосов
/ 16 мая 2019

У меня есть файл "testread.txt", имеющий данные ниже.

A
1
2
3
4

BA
5
6
7
8

CB
9
10
11

D
12
13
14
15

Я хотел читать и извлекать данные в каждом разделе и записывать их в разные файлы. Например,

1
2
3
4

Запишите его в файл "a.txt"

5
6
7
8

Запишите его в файл "b.txt"

9
10
11

Запишите его в файл "c.txt" и так далее ...

Ответы [ 2 ]

1 голос
/ 16 мая 2019

(грубое) решение может быть получено с использованием:

  1. collections.defaultdict для разделения и хранения предметов;
  2. numpy.savetxt чтобы сохранить их в файлы.
import numpy as np
from collections import defaultdict

with open('testread.txt', 'r') as f:
    content = f.readlines()

d = defaultdict(list)

i = 0
for line in content:
    if line == '\n':
        i+=1
    else:
        d[i].append(line.strip())

for k,v in d.items():
    np.savetxt('file{}.txt'.format(k), v[1:], delimiter=",", fmt='%s')

и вы получите:

  • file0.txt
1
2
3
4
  • file1.txt:
5
6
7
8
  • file2.txt:
9
10
11
  • file3.txt
12
13
14
15
0 голосов
/ 16 мая 2019

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

files_list = ['a.txt', 'b.txt', 'c.txt']
fpr = open('input.txt')
for f in files_list:
    with open(f, 'w') as fpw:
        for i, line in enumerate(fpr):
            if i == 0:   # skips first line
                continue
            if line.strip():
                fpw.write(line)
            else:
                break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...