在文件中打印行,直到行空白行

时间:2019-05-16 17:28:42

标签: python file

我有一个文件“ 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 个答案:

答案 0 :(得分:1)

可以使用以下一种(粗略的)解决方案:

  1. collections.defaultdict来划分和存储项目;
  2. numpy.savetxt将其保存到文件中。
Cmd+R

您会得到:

  • 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
  • file3.txt
9
10
11

答案 1 :(得分:0)

这个想法是当有新的空行可用时跳过文件。下面的代码应该可以解决问题。

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