如何将以特定字符串开头的每多行转置为列?
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']]
请问如何使用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']]