2016-04-12 9 views
0

Ich muss jede Zeile einer Eingabedatei lesen und jedem seine eigene ID zuweisen, so dass es später identifiziert werden kann.Lesen Sie jede Zeile einer Datei und geben Sie jedem eine ID - Python

Dies wäre einfach, wenn ich die Anzahl der Zeilen weiß, dass die Datei oder wenn sie kurz haben würde, aber ich muß es in der Lage zu machen, eine Datei mit einem beliebigen Anzahl von Zeilen des Prozess Datei

Zum Beispiel nehmen ich verwende enthalten diese:

somewhere over rainbow bluebirds fly birds fly over rainbow why why 
double time population long takes population double size 
whoa full rainbow way double rainbow double rainbow way 

und ich brauche jede Zeile einzeln zu lesen und ein ID zuweisen, so dass somewhere over rainbow bluebirds fly birds fly over rainbow why why 1 ID zugeordnet ist und so weiter.

Ich kann nicht scheinen, in der Lage zu finden, eine Möglichkeit zum dynamischen Erstellen von Variablen/Variablennamen und ich kenne keine andere Möglichkeit der automatischen Zuordnung IDs.

Jede Hilfe würde sehr geschätzt werden.

+1

Was Sie suchen, ist ein Wörterbuch oder eine Liste. Sind das Hausaufgaben? Es riecht sehr nach Hausaufgaben. – ArtOfWarfare

+0

Dies scheint das zweite Mal zu sein, dass Sie diese Frage in zwei Tagen geschrieben haben, also habe ich sie als Duplikat markiert. – ArtOfWarfare

Antwort

1
for line_no,line in enumerate(file,1): 
    ... 

line_no wäre Ihre id ... Ich denke,

3

Sie können die Linien in einem Wörterbuch speichern, mit den Tasten wie die ids:

with open(myfile, 'r') as f: 
    lines = {i: line for i, line in emumerate(f, 1)} 

Dieses ein Wörterbuch produzieren wird mit Zahlen von 1 als Schlüssel:

{ 
    1: "somewhere over rainbow bluebirds fly birds fly over rainbow why why", 
    2: "double time population long takes population double size", 
    3: "whoa full rainbow way double rainbow double rainbow way" 
} 

Das zweite Argument der enumerate function legt die Startnummer für die Enumeration fest. In diesem Fall beginnen wir mit der Indizierung von einer; Der Standardwert ist Null, wenn keine Startnummer angegeben ist.

0

können Sie einen dict verwenden, um die Zeilen zu speichern, mit der ID

Hier ist ein Beispiel

rows = {} 
n = 1 
with open(filename) as f: 
    for line in f: 
     rows[n] = line 
     n += 1 
0

Ich würde wahrscheinlich eine Liste nur verwenden, mit der Position als ID:

ls = [] 
with open(file, 'r') as f: 
    for line in f: 
     ls.append(line.rstrip()) 
0

Ein Wörterbuch scheint eine gute Lösung für dieses Problem zu sein. Ich würde auch Enumerate verwenden, um die Zeilennummer automatisch zu erhalten.

file_name = 'text.txt' 
with open(file_name, 'r') as f: 
    indexes = {index:value for index, value in enumerate(f)} 
>>>indexes[0] 
'somewhere over rainbow bluebirds fly birds fly over rainbow why why\n' 
Verwandte Themen