我想问一下如何将多行转换为列并使用python保存到文本文件中吗?我在以下部分附加了输入和预期的输出。根据输入,我想选择以“ 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
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
首先让我们将数据加载到内存中
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))
代码是令人难以置信的,所以如果您遇到问题,请告诉我...
答案 1 :(得分:0)
关于读写文本文件还存在其他问题,因此,我将作为练习来留给您。
假设您已经以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']]