Python, как считать и разделить строку к нескольким целым числам

Для входа файл отделяются пространством/вкладкой как:

1 2 3
4 5 6
7 8 9

Как считать строку и разделить целые числа, затем сохраните или в списки или в кортежи?Спасибо.

data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
7
задан Stan 25 June 2010 в 23:52
поделиться

5 ответов

Один из способов сделать это, если предположить, что подсписки находятся в отдельных строках:

with open("filename.txt", 'r') as f:
    data = [map(int, line.split()) for line in f]

Обратите внимание, что оператор with не стал официальным до Python 2.6. Если вы используете более раннюю версию, вам нужно сделать

from __future__ import with_statement
11
ответ дан 6 December 2019 в 10:47
поделиться

Если вы имеете дело с матрицами или таблицами чисел, могу я предложить пакет numpy?

import numpy as np
data = np.loadtxt(input_filename)
3
ответ дан 6 December 2019 в 10:47
поделиться

tuples = [кортеж (int (s) для s в line.split ()) для открытой строки ("file.txt"). Readlines ()]

Мне нравится карта Джеффа (int, line.split ()) вместо внутреннего генератора.

2
ответ дан 6 December 2019 в 10:47
поделиться

Вы имеете в виду, вот так?

update

Просто преобразуйте каждую строку в int

string = """1 2 3
4 5 6
7 8 9"""

data = []
for line in string.split("\n"):    #split by new line
    data.append( map( int, line.split(" ") ) ) # split by spaces and add 

print( data )

Вывод:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Дааааа !!!

1
ответ дан 6 December 2019 в 10:47
поделиться
def getInts(ln):
    return [int(word) for word in ln.split()]

f = open('myfile.dat')
dat = [getInts(ln) for ln in f]
1
ответ дан 6 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: