Python как читать и разбивать строку на несколько целых - PullRequest
7 голосов
/ 26 июня 2010

Для входного файла, разделенного пробелом / табуляцией, например:

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)]

Ответы [ 5 ]

11 голосов
/ 26 июня 2010

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

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
3 голосов
/ 26 июня 2010

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

import numpy as np
data = np.loadtxt(input_filename)
2 голосов
/ 26 июня 2010

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

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

1 голос
/ 26 июня 2010
def getInts(ln):
    return [int(word) for word in ln.split()]

f = open('myfile.dat')
dat = [getInts(ln) for ln in f]
1 голос
/ 26 июня 2010

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

обновление

Просто конвертируйте каждую строку в 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]]

Да даааа !!!

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