2010-06-25 65 views

Trả lời

11

Một cách để làm điều này, giả sử các danh sách con đang trên dòng riêng biệt:

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

Lưu ý rằng tuyên bố with không trở thành chính thức cho đến khi Python 2.6. Nếu bạn đang sử dụng một phiên bản trước đó, bạn sẽ cần phải làm

from __future__ import with_statement 
+0

+1 đây là cách gần nhất với cách tôi làm và tôi nghĩ ví dụ tốt nhất về "thực tiễn tốt nhất" (bất kể điều đó có nghĩa) của 5 câu trả lời ở đây. –

2

tuples = [tuple (int (s) cho s trong line.split()) cho dòng trong mở ("file.txt") .readlines()]

Tôi thích Jeff's map(int, line.split()), thay vì bộ tạo bên trong.

+0

Cách này có thực sự lưu trữ một dòng được chia tách thành một bộ dữ liệu không? Bạn có thể giải thích thêm một chút không? Cảm ơn. – Stan

+1

Thực tế điều này sẽ cung cấp cho bạn danh sách các danh sách, không phải danh sách các bộ dữ liệu (vì 'str.split' trả về một danh sách). Về cơ bản những gì nó làm là mở tập tin, đọc trong dòng của nó, sau đó lặp qua chúng ('cho tup in ...') và phân chia từng cái trên khoảng trắng. –

+0

Vậy làm thế nào để lưu trữ trong một bộ dữ liệu? Đó là một phần của câu hỏi ban đầu của tôi. Cảm ơn. – Stan

1

Ý bạn là, như thế này?

cập nhật

Chỉ cần chuyển đổi mỗi chuỗi thành 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) 

Output:

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

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

Da daaaa !!!

+0

không, tôi muốn lưu số nguyên trong danh sách của tôi, không phải chuỗi. – Stan

+0

Và bạn có thể tìm ra ví dụ của tôi không? ... thật dễ dàng ... – OscarRyz

+0

Tôi sẽ sử dụng chức năng ánh xạ. Vẫn không tìm ra cách khác để chuyển đổi tất cả chuỗi đã đọc thành một số nguyên. – Stan

1
def getInts(ln): 
    return [int(word) for word in ln.split()] 

f = open('myfile.dat') 
dat = [getInts(ln) for ln in f] 
3

Nếu bạn thấy mình đối phó với ma trận hoặc bảng số, tôi có thể đề xuất gói gọn gàng không?

import numpy as np 
data = np.loadtxt(input_filename) 
Các vấn đề liên quan