获取txt文件python中每行的特定列

获取txt文件python中每行的特定列,python,bash,shell,Python,Bash,Shell,我有两个txt文件。 第一个是包含每行的数字,如下所示: 22 15 32 53 . . 0.1 2.3 4.5 .... 5.4 3.2 77.4 2.1 .... 8.1 .... . . 另一个文件中每行包含20个连续数字,如下所示: 22 15 32 53 . . 0.1 2.3 4.5 .... 5.4 3.2 77.4 2.1 .... 8.1 .... . . 根据第一个txt中的给定数字,我想将其他文件分开。例如,在第一行的第一个txt中,我有22个,这意味着我将取第一行

我有两个txt文件。 第一个是包含每行的数字,如下所示:

22
15
32
53
.
.
0.1 2.3 4.5 .... 5.4
3.2 77.4 2.1 .... 8.1
....
.
.
另一个文件中每行包含20个连续数字,如下所示:

22
15
32
53
.
.
0.1 2.3 4.5 .... 5.4
3.2 77.4 2.1 .... 8.1
....
.
.
根据第一个txt中的给定数字,我想将其他文件分开。例如,在第一行的第一个txt中,我有22个,这意味着我将取第一行有20列,第二行有两列,第二行的其他列我将删除。然后我将查看第一个txt的第二行(它是15),这意味着我将从其他文件的第三行中获取15列,并删除第三行中的其他列,依此类推。我怎么做这个

with open ('numbers.txt', 'r') as f:
with open ('contiuousNumbers.txt', 'r') as f2:
with open ('results.txt', 'w') as fOut:
   for line in f:
   ...

谢谢。

对于您在第一个文件中迭代的每一行上的数字,请将该数字设置为要读取的目标总数,这样您就可以使用
while
循环在第二个文件对象上继续使用
next
读取数字,并从总数中递减数字,直到总数达到0为止。使用总数和数字数中较低的数字对数字进行切片,以便仅输出请求的数字数:

for line in f:
    output = []
    total = int(line)
    while total > 0:
        try:
            items = next(f2).split()
            output.extend(items[:min(total, len(items))])
            total -= len(items)
        except StopIteration:
            break
    fOut.write(' '.join(output) + '\n')
因此,给定第一个文件:

3
6
1
5
2 5
3 7
2 1
3 6
7 3
2 2
9 1
3 4
8 7
1 2
3 8
第二个文件包含:

3
6
1
5
2 5
3 7
2 1
3 6
7 3
2 2
9 1
3 4
8 7
1 2
3 8
输出文件将具有:

2 5 3
2 1 3 6 7 3
2
9 1 3 4 8

您能提供一个示例输出吗?它看起来像continuesNumbers.txt,但行数较少(在末尾,行号与numbers.txt相同)。假设continuesNumbers.txt中每行有3列((第一行)0.1 0.2 0.3(第二行)2 0.2 0.3(第三行)0.7 0.5 3(第四行)0.2 3 4(第五行)1 2 3(第六行)2 3 4,依此类推)。txt是这样的((第一行)1(第二行)7(第三行)4等等)。输出将是这样的((第一行)0.1(第二行)20.20.30.7 0.5 3 0.2(第三行)1 2 3 2,依此类推)。我希望我能告诉你。