gpt4 book ai didi

python - 从 Python 中的多个文本文件复制列

转载 作者:太空狗 更新时间:2023-10-30 03:04:51 25 4
gpt4 key购买 nike

我有大量包含数据的文本文件,它们排列成固定数量的行和列,列之间用空格分隔。 (类似于 .csv,但使用空格作为分隔符)。我想从每个文件中提取给定的列,并将其写入新的文本文件。

到目前为止我已经尝试过:

results_combined = open('ResultsCombined.txt', 'wb')

def combine_results():
for num in range(2,10):
f = open("result_0."+str(num)+"_.txt", 'rb') # all the text files have similar filename styles
lines = f.readlines() # read in the data
no_lines = len(lines) # get the number of lines

for i in range (0,no_lines):
column = lines[i].strip().split(" ")

results_combined.write(column[5] + " " + '\r\n')

f.close()

if __name__ == "__main__":
combine_results()

这会生成一个文本文件,其中包含我想要的来自单独文件的数据,但作为一个单独的列。 (即我设法将列“堆叠”在彼此之上,而不是将它们作为单独的列并排放置)。我觉得我错过了一些明显的东西。

在另一次尝试中,我设法将所有单独的文件写入一个文件,但没有挑选出我想要的列。

import glob

files = [open(f) for f in glob.glob("result_*.txt")]
fout = open ("ResultsCombined.txt", 'wb')

for row in range(0,488):
for f in files:
fout.write( f.readline().strip() )
fout.write(' ')
fout.write('\n')

fout.close()

我基本上想要的是从每个文件中复制第 5 列(它始终是同一列)并将它们全部写入一个文件。

最佳答案

如果您不知道文件中的最大行数并且文件是否可以放入内存,那么以下解决方案会起作用:

import glob

files = [open(f) for f in glob.glob("*.txt")]

# Given file, Read the 6th column in each line
def readcol5(f):
return [line.split(' ')[5] for line in f]

filecols = [ readcol5(f) for f in files ]
maxrows = len(max(filecols, key=len))

# Given array, make sure it has maxrows number of elements.
def extendmin(arr):
diff = maxrows - len(arr)
arr.extend([''] * diff)
return arr

filecols = map(extendmin, filecols)

lines = zip(*filecols)
lines = map(lambda x: ','.join(x), lines)
lines = '\n'.join(lines)

fout = open('output.csv', 'wb')
fout.write(lines)
fout.close()

关于python - 从 Python 中的多个文本文件复制列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307661/

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