-5

我在这个网站上找到了一些有用的东西,但我的输入文件与已经发布的示例不同,我无法以有效的方式实现飞跃。

我的输入文件如下所示:

sample_dude data1 data2 data3 data4
sample_lady data5 data6 data7 data8
sample_dude data9 data10 data11 data12
sample_child data13 data14 data15 data16

我想为每个包含所有数据列的样本创建一个单独的文件。例如,一个文件名为 sample_dude.txt,如下所示:

data1 data2 data3 data4
data9 data10 data11 data12

样本数量未知,但始终只有四个数据列。

非常感谢任何帮助。谢谢你。

PS:我正在尝试在 python 中执行此操作。

4

3 回答 3

4

您可以通过打开文件并循环遍历每一行来执行此操作。我不会为你写代码,但这里有一个算法。

# Open the input file
# Loop through each line of the file
    # Split the line into the file name and the data
    # Open the file name and append the data to the end

您还可以在打开文件进行写入之前保存所有文件的数据。如果您有很多包含多行的文件,这会更快。

于 2012-11-11T22:59:25.570 回答
0

例如像这样:

with open('input.txt') as input:
    for line in input:
        name, data = line.split(' ', 1)

        with open('{0}.txt'.format(name), 'a') as f:
            f.write(data)
于 2012-11-11T22:59:32.557 回答
0

试试这样的东西?拆分将所有文件名映射到列列表,创建行并将行写入每个文件。

with open('someFile.txt') as f:
  out = {}
  for line in f:
    key, data = line.split(' ', 1)        
    if not key in out.keys():
      out[key] = []
    out[key].append(data)

for k, v in out.items():
  with open(k+'.txt', 'w') as f:
    f.writelines(v)
于 2012-11-11T23:01:18.473 回答