Как превратить строку в столбец в Python 3? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть текстовый файл, который гласит:

exam1    exam2    final
87       85       90
90       95       89
73       81       85
98       93       94
78       76       82

Мне нужно сделать это:

[['exam1', 87, 90, 73, 98, 78], ['exam2', 85, 95, 81, 93, 76], ['final', 90, 89, 85, 94, 82]]

Вот мой код:

f = open("scores.txt", "r")
st = f.readline()
print(st)
st.split() 
a = []
a = f.readline()
print(a)

Что я делаю не так?

1 Ответ

0 голосов
/ 06 ноября 2019

Попробуйте это:

from itertools import zip_longest

with open('scores.txt', 'r') as f:
    content = f.read()

print(content)
# prints just string

print(content.splitlines())
# ['exam1    exam2    final', '87       85       90', '90       95       89', '73       81       85', '98       93       94', '78       76       82']

print([c.split() for c in content.splitlines()])
# [['exam1', 'exam2', 'final'], ['87', '85', '90'], ['90', '95', '89'], ['73', '81', '85'], ['98', '93', '94'], ['78', '76', '82']]


list1 = [c.split() for c in content.splitlines()]

# transpose onliner ;)
print(list(map(list, zip(*list1))))
# [['exam1', '87', '90', '73', '98', '78'], ['exam2', '85', '95', '81', '93', '76'], ['final', '90', '89', '85', '94', '82']]

# if You have lists of different sizes this may suit better
print(list(map(list, zip_longest(*list1))))

https://docs.python.org/3.6/library/itertools.html#itertools.zip_longest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...