2017-09-06 1 views
1

noch etwas zu Python und StackOverflow. Ich versuche, eine Textdatei mit einer Liste von Wörtern aufzunehmen und darüber zu iterieren und diese nach jedem 1., 2. und 3. Wort in 3 verschiedene Listen zu sortieren. Mein Problem ist, dass ich es nicht mehr als einmal betreiben kann. Ich denke, mein Incrementor könnte falsch sein.Sortierung einer Textspalte nach Inkrementoren und Aufzählung

shakey2 = open('/path/to/file/shakey2.txt', 'r') 

col1 = [] 
col2 = [] 
col3 = [] 
inc = 0 
ent1, ent2, ent3 = range(3) #0, 1, 2 
for en, line in enumerate(shakey2): 
    l = line.strip() 
    if ent1 + inc == en: 
     col1.append(l) 
    elif ent2 + inc == en: 
     col2.append(l) 
    elif ent3 + inc == en: 
     col3.append(l) 

    inc += 3 
    continue  

shakey2.close() 
print(col1, col2, col3) 

Hier ist ein Ausschnitt aus der Textdatei die ich benutze:

artless 
base-court 
apple-john 
bawdy 
bat-fowling 
baggage 
beslubbering 
beef-witted 
barnacle 
bootless 
beetle-headed 
bladder 
churlish 
boil-brained 
boar-pig 
cockered 
clapper-clawed 
bugbear 

Ausgang:

(['artless'], ['base-court'], ['apple-john']) 

gewünschte Ausgabe:

(['artless', 'bawdy', 'beslubbering'], ['base-court', 'bat-fowling', 'beef-witted'], ['apple-john', 'baggage', 'barnacle']) 
+0

zeigen die ** ** gewünschten Ausgang – RomanPerekhrest

+1

Sie müssen die Mod nehmen, oder aber die Summe dieser Dinge Anschläge zwischen 0 und 3 liegen. Du brauchst nicht einmal etwas zu addieren, denke ich nicht. Unabhängig davon, erreichen Sie nie die Linie nach "weiter" –

Antwort

3

Mit mod Sie tun können es mit Leichtigkeit:

shakey2 = open('/path/to/file/shakey2.txt', 'r') 

cols = [[] for _ in range(3)] 
for en, line in enumerate(shakey2): 
    cols[en % 3].append(line.strip()) 

shakey2.close() 
print(cols) 

Und wenn Sie diese Liste in Ihrer ersten drei Variablen entpacken:

col1, col2, col3 = cols 
+0

Danke. Das hat es getan. Ich lerne gerade, wie man aufzählt. Auch die Liste der Listenimplementierung habe ich nicht berücksichtigt. –

+0

Sie sollten es erklären, damit er versteht, was es tut, und so verstehen andere Leute, die Python neu sind –

+0

https://docs.python.org/3/library/functions.html#enumerate –

Verwandte Themen