2016-04-04 9 views
-1

Ich habe eine Liste wiewie für Leitungen mit mehreren Trennzeichen auf Linux Split und Streifen in Python verwenden

a= [(0.11004363790442408, '0 22'), 
    (1.0003303788789184, '1 7'), 
    (0.9427256865065468, '15 23'), 
    (0.3508626679066326, '8 21'), 
    (1.0815767762687958, '5 27'), 
    (0.2889125295483047, '19 26'), 
    (0.9294135566237669, '4 10')] 

Ich mag einzelne Einheiten zugreifen wie folgt für die erste Klammer als Probe. Hier werden nur 7 Einträge angezeigt; im realen Fall sind das Millionen!

ID[0]= 0.11004363790442408 
ID[1]=0 
ID[2]=22 

Ich schrieb etwas wie

entities=len(a) 
for data in range(entities): 
lineContent=a.strip(' ').split(' ').split(',') 
print lineContent 
ID[0]= lineContent [0] 
ID[1]= lineContent [1] 
ID[2]= lineContent [2] 

sollte es für alle Einträge einige Schleife sein, so habe ich eine for Schleife über den Bereich. Irgendwelche Vorschläge?

Bitte auch die Aufteilung so aufarbeiten, dass sie geändert werden kann.

+0

Was _exactly_ Sie bisher versucht haben? 'a.strip ('')' funktioniert nicht, da 'a' in Ihrem Fall eine Liste zu sein scheint – Finwood

+0

die Funktionsaufrufe umschalten – rocksteady

+1

Erfinden Sie keine übertrieben ausgeklügelten Wege. Schleife einfach über die Liste und spalte ('') 'das zweite Element jedes Tupels. –

Antwort

0
entities = len(a) 

for data in range(entities): 
    ID = [] 
    ID.append(a[data][0]) 
    ID.extend(a[data][1].split(' ')) 
    print("ID[0] = {0}\nID[1] = {1}\nID[2] = {2}\n".format(ID[0], ID[1], ID[2])) 

weiß nicht, ob dies das ist, was Sie wollen.

0

Dies ist eine einfache Aufgabe und es gibt zahlreiche Möglichkeiten, es zu lösen. Hier ist eine:

a= [(0.11004363790442408, '0 22'), 
    (1.0003303788789184, '1 7'), 
    (0.9427256865065468, '15 23'), 
    (0.3508626679066326, '8 21'), 
    (1.0815767762687958, '5 27'), 
    (0.2889125295483047, '19 26'), 
    (0.9294135566237669, '4 10')] 


# no iterator, just the list elements 
for lst in a: 
    # make a new list containing only the float at first 
    ID = [lst[0]] 
    # extend the list with the two tuple values cast to int 
    ID.extend(int(x) for x in lst[1].split(" ")) 
    print ID 

Und ein anderer (im Grunde das Gleiche, aber kürzer):

for lst in a: 
    ID = [lst[0]] + [int(x) for x in lst[1].split(" ")]