2016-08-21 12 views
2

Ich habe eine Liste von drawingnumbers, ich versuche diese Strings zu teilen und dann an eine Reihe von Listen anfügen.Iterieren durch Liste - Teilung Strings

Ich hoffe auf eine Reihe von Listen, die jedes relevante Stück der ursprünglichen Zeichenfolge enthält.

Momentan durchläuft meine Definition die Liste, überschreibt aber die Variablen und hängt sie nicht an. Ich habe also einen einzelnen Eintrag für jede Variable und diese entsprechen dem endgültigen Eintrag der Liste.

Könnte jemand bitte helfen?

# drawingnumber split 

drawingnumber = ["AAA601-XXX-A-L00-1028-DR-GA-200-001", 
"AAA601-XXX-A-L10-1028-DR-GA-200-001", 
"AAA601-XXX-A-L00-1029-DR-GA-200-001", 
"AAA601-XXX-A-L00-1029-DR-GA-200-XXX"] 

building = [] 
buildinglist = [] 
originator = [] 
discipline = [] 
level = [] 
scope = [] 
drawingtype = [] 
drawingsubtype = [] 
numbera = [] 
numberb = [] 

for i in drawingnumber: 
    building, originator, discipline, level, scope, \ 
    drawingtype,drawingsubtype, numbera, numberb = i.split("-") 

print("building:", building) 
print("originator: ", originator) 
print("discipline: ", discipline) 
print("level: ", level) 
print("scope: ", scope) 
print("drawingtype: ", drawingtype) 
print("drawingsubtype", drawingsubtype) 
print("drawingident", numbera, "-", numberb) 

Antwort

2

können Sie zip verwenden, nachdem jedes Element in der Liste Aufspalten Ihre Listen zu transponieren:

zip(*[i.split("-") for i in drawingnumber]) 

und ordnen ihnen Namen zu Listen:

building, originator, discipline, level, scope, \ 
drawingtype, drawingsubtype, numbera, numberb = zip(*[i.split("-") for i in drawingnumber]) 

Beispiel Ausgabe:

building 
# ('AAA601', 'AAA601', 'AAA601', 'AAA601') 

originator 
# ('XXX', 'XXX', 'XXX', 'XXX') 

numberb 
# ('001', '001', '001', 'XXX') 
+2

Beat mich, upvoted – Mureinik

+0

Perfekt - danke euch allen. – Jup

+0

@Jup: Wenn die Antwort hilfreich ist, erwägen Sie, sie zu erhöhen/zu akzeptieren (das grüne Häkchen links). – Jan

0

Ändern Sie einfach

for i in drawingnumber: 
    building, originator, discipline, level, scope, drawingtype,drawingsubtype, numbera, numberb = i.split("-") 

zu:

for i in drawingnumber: 
    building_, originator_, discipline_, level_, scope_, drawingtype_,drawingsubtype_, numbera_, numberb_ = i.split("-") 
    building.append(building_) 
    originator.append(originator_) 
    ...etc... 

gespaltet valeus Ihre Variablen jedes Mal neu definieren, was Sie hier tun wollen im Grunde anhängen diejenigen, Listen, die Sie erstellt haben, auch mehrere Namen für die Liste wie Pick: Gebäude und an sie singuläre Variablen anhängen

0
drawingnumber = ["AAA601-XX1-A-L00-1028-DR-GA-200-001", 
"AAA602-XX2-A-L10-1028-DR-GA-200-001", 
"AAA603-XX3-A-L00-1029-DR-GA-200-001", 
"AAA604-XX4-A-L00-1029-DR-GA-200-XXX"] 

building = [] 
buildinglist = [] 
originator = [] 
discipline = [] 
level = [] 
scope = [] 
drawingtype = [] 
drawingsubtype = [] 
numbera = [] 
numberb = [] 

for i in drawingnumber: 
    j = i.split('-') 
    building.append(j[0]) 
    buildinglist.append(j[1]) 


for i in range(len(drawingnumber)): 
    print("building:", building[i]) 
    print("buildinglist:", buildinglist[i])