首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印文件中的行,直到行为空

打印文件中的行,直到行为空
EN

Stack Overflow用户
提问于 2019-05-17 01:28:42
回答 2查看 71关注 0票数 0

我有一个文件"testread.txt“,其中包含以下数据。

代码语言:javascript
复制
A
1
2
3
4

BA
5
6
7
8

CB
9
10
11

D
12
13
14
15

我想逐节读取和提取数据,并将其写入不同的文件。例如;

代码语言:javascript
复制
1
2
3
4

将其写入文件"a.txt“

代码语言:javascript
复制
5
6
7
8

将其写入文件"b.txt“

代码语言:javascript
复制
9
10
11

将其写入文件"c.txt“,依此类推。

EN

回答 2

Stack Overflow用户

发布于 2019-05-17 01:54:05

可以使用以下命令获得(粗略的)解决方案:

用于划分和存储items;

  1. collections.defaultdict

代码语言:javascript
复制
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

代码语言:javascript
复制
1
2
3
4

  • file1.txt

代码语言:javascript
复制
5
6
7
8

  • file2.txt

代码语言:javascript
复制
9
10
11

  • file3.txt

代码语言:javascript
复制
12
13
14
15
票数 1
EN

Stack Overflow用户

发布于 2019-05-17 01:44:21

这个想法是当一个新的空行可用时跳过文件。下面的代码应该可以做到这一点。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56173773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档