gpt4 book ai didi

python - 使用 Python 按列组织数据文件的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:11 25 4
gpt4 key购买 nike

我得到一个程序的输出数据文件,它看起来像这样,每个时间步都有不止一行:

0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00 \n   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00
7.9819E-06 1.7724E-02 2.3383E-02 3.0048E-02 3.8603E-02 4.9581E-02 \n 5.6635E-02 4.9991E-02 3.9052E-02 3.0399E-02
....

我要排成十列

我制作了一个 Python 脚本,使用正则表达式删除适当行中的\n,但我认为应该有更简单、更优雅的方法来完成,这是我的脚本:

import re

with open('inputfile', encoding='utf-8') as file1:
datai=file1.read()

dataf=re.sub(r'(?P<nomb>( \d\.\d\d\d\dE.\d\d){8})\n','\g<nomb>',datai)

with open('result.txt',mode='w',encoding='utf-8') as resultfile:
resultfile.write(datof)

最佳答案

你可以试试简单的

single_list = []
with open(your_file) as f:
for line in f.readlines():
single_list.extend(line.rstrip().split())

list_of_rows = [single_list[i*10:i*10+10] for i in range(len(single_list)//10)]

with open(output_file) as f:
for line in list_of_rows:
f.write(' '.join(line) + '\n')

如果您的所有数据都可以作为单个字符串读取(使用您的 data = f.read()),您还可以:

merged_data = data.replace("\n", " ")
single_list = merged_data.split()

并如上所述使用 single_list


如果输入文件很大并且创建临时列表存在内存问题,您可以尝试类似的方法:

    with open(input_file,'r') as inpf, open(output_file,'w') as outf:
writable = []
for line in input_file:
row = line.rstrip().split()
writable.extend(row)
while len(writable) >= 10:
outf.write(" ".join(writable[:10]) + "\n")
writable = writable[10:]

关于python - 使用 Python 按列组织数据文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com