2010-06-25 7 views

Antwort

11

Eine Möglichkeit, dies zu tun, vorausgesetzt, die Teil-Listen sind auf separate Linien:

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

Beachten Sie, dass die with Anweisung nicht offiziell bis Python 2.6 worden ist. Wenn Sie eine frühere Version verwenden, müssen Sie

from __future__ import with_statement 
+0

+1 dies ist am nächsten an der Art, wie ich es tun würde, und ich denke, das beste Beispiel für "Best Practices" (was auch immer das bedeutet) der 5 Antworten hier. –

2

Tupel = [tuple (int (s) für s in line.split()) für Zeile in open ("file.txt") zu tun .readlines()]

Ich mag Jeff's map(int, line.split()), anstelle des inneren Generators.

+0

Wird auf diese Weise eine geteilte Linie in einem Tupel gespeichert? Kannst du bitte etwas mehr erklären? Vielen Dank. – Stan

+1

Das wird Ihnen tatsächlich eine Liste von Listen geben, keine Liste von Tupeln (weil 'str.split' eine Liste zurückgibt). Im Grunde heißt es, die Datei zu öffnen, in ihren Zeilen zu lesen, dann durch sie zu iterieren ('for tup in ...') und jede auf whitespace zu teilen. –

+0

So, wie in einem Tupel zu speichern? Das ist ein Teil meiner ursprünglichen Frage. Vielen Dank. – Stan

1

Sie meinen, so?

Update

Gerade jede Zeichenfolge in

int konvertieren
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

Nein, ich möchte Ganzzahl in meiner Liste speichern, nicht Zeichenfolge. – Stan

+0

Und können Sie aus meinem Beispiel herausfinden? ... es ist einfach ... – OscarRyz

+0

Ich lande mit Mapping-Funktion. Ich habe immer noch keine andere Möglichkeit gefunden, alle eingelesenen Strings in Integer umzuwandeln. – 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

Wenn Sie sich mit Matrizen oder Tabellen von Zahlen beschäftigen, kann ich ein numpy Paket vorschlagen?

import numpy as np 
data = np.loadtxt(input_filename) 
Verwandte Themen