为了账号安全,请及时绑定邮箱和手机立即绑定

python每行读取和重写值

python每行读取和重写值

鸿蒙传说 2023-04-25 17:28:21
我正在改变我的一个老问题。我有一个这种格式的文件;每行 4 个值:2623    831     6892    02353    1803    3425    01910    1823    3810    01637    1287    2811    02803    546     6609    01591    2157    2367    02167    1906    2665    03192    2168    8362    03903    1465    2011    02355    1801    2004    02390    796     5055    01703    1044    3441    01886    1328    2731    01496    1277    3074    01827    460     5992    01945    1785    2065    01983    1963    2818    01532    2229    6936    02449    5972    1918    02699    2007    1581    0我想要这个;每行 10 个值:2623    831     6892    0 2353    1803    3425    0 1910    1823    3810    0 1637    1287    2811    0 2803    546     6609    01591    2157    2367    0 2167    1906    2665    0 3192    2168    8362    0 3903    1465    2011    0 2355    1801    2004    02390    796     5055    0 1703    1044    3441    0 1886    1328    2731    0 1496    1277    3074    0 1827    460     5992    01945    1785    2065    0 1983    1963    2818    0 1532    2229    6936    0 2449    5972    1918    0 2699    2007    1581    0with open("Read_file") as f1:       with open("Write_file"),"w") as f2:            f2.writelines(itertools.islice(f1, 4, None))任何提示表示赞赏。
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

尝试这个:


with open('data.txt') as fp, open('output.txt', 'w') as fw:

    data = fp.read().replace('\n', ' ').split()

    for i in range(0, len(data) // 10):

        fw.write(' '.join(data[i * 10: (i + 1) * 10]) + '\n')

输出:


2623 831 6892 0 2353 1803 3425 0 1910 1823

3810 0 1637 1287 2811 0 2803 546 6609 0

1591 2157 2367 0 2167 1906 2665 0 3192 2168

8362 0 3903 1465 2011 0 2355 1801 2004 0

2390 796 5055 0 1703 1044 3441 0 1886 1328

2731 0 1496 1277 3074 0 1827 460 5992 0

1945 1785 2065 0 1983 1963 2818 0 1532 2229

6936 0 2449 5972 1918 0 2699 2007 1581 0


查看完整回答
反对 回复 2023-04-25
?
烙印99

TA贡献1829条经验 获得超13个赞

不依赖于将整个文件读入内存的版本:


def get_words(f):

    for line in f:

        for word in line.split():

            yield word


def chunk_values(iterator, num):

    while True:

        yield [next(iterator) for _ in range(num)]


with open('input.txt') as fin, open('output.txt', 'w') as fout:        

    for chunk in chunk_values(get_words(fin), 10):

        fout.write(' '.join(chunk) + '\n')


查看完整回答
反对 回复 2023-04-25
  • 2 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信