如何将以特定字符串开头的每多行转置为列?

how to transpose every multiple rows that start with a specific string into columns?

请问如何使用python将每行转置为列并保存到文本文件?我在以下部分附上了输入和预期输出。根据输入,我想 select 以 'number' 开头的每一行,然后转置为列。

最后,我想将预期的输出保存到文本文件中。

输入:

number 
12
apple
13
banana
14
number
1
carrot
2
cucumber
3
number 
11
pen
10

预期输出:

number    12     apple     13     banana       14
number    1      carrot    2      cucumber     3
number    11     pen       10

任何帮助将不胜感激。谢谢!

首先让我们将数据加载到内存中:

with open('input.txt', 'r') as data:
    info = data.read()
info = info.split()

现在让我们将数据配对成 (name, number) 个元组:

list_of_tuples = [(name, int(info[index+1])) for name, index in enumerate(info)]

现在找到你的行:

list_of_rows = []
cur_row = []
for tuple in list_of_tuples:
    if tuple[0] == 'number':
         if len(cur_row) > 0:
              list_of_rows.append(cur_row)
              cur_row.clear()
         cur_row.append(tuple)
list_of_rows.append(cur_row)

现在将其加载到文本文件中:

with open('out.txt', 'w') as out:
     for row in list_of_rows:
          out.write('\t'.join(row))

代码是 mind-compiled,所以如果您 运行 遇到问题请告诉我...

关于读取和写入文本文件还存在其他问题,因此我将这些部分留给您作为练习。

假设您已经将输入文件加载为 records:

records = ['number', '12', 'apple', '13', 'banana', '14', 'number', '1', 'carrot', '2', 'cucumber', '3', 'number', '11', 'pen', '10']

您要做的是遍历每个 record,如果是 'number',则创建一个新行,然后将 record 添加到最近的行。此代码执行此操作:

rows = []
for record in records:
    if record == 'number':
        # Create a new row
        rows.append([])
    # Append to the last row
    rows[-1].append(record)

rows 将是这样的:

[['number', '12', 'apple', '13', 'banana', '14'],
 ['number', '1', 'carrot', '2', 'cucumber', '3'],
 ['number', '11', 'pen', '10']]