2012-11-01 3 views
7

Eventuali duplicati:
split a string in pythonCome convertire una stringa che contiene caratteri di nuova riga in una lista in Python?

voglio cambiare questo:

str = 'blue\norange\nyellow\npink\nblack' 

a questo:

list = ['blue','orange', 'yellow', 'pink', 'black'] 

Ho provato alcuni fo r e while loop e non sono stato in grado di farlo. Voglio solo che il carattere di nuova riga sia rimosso durante l'attivazione per creare l'elemento successivo. Mi è stato detto di usare:

list(str) 

che dà

['b', 'l', 'u', 'e', '\n', 'o', 'r', 'a', 'n', 'g', 'e', '\n', 'y', 'e', 'l', 'l', 'o', 'w', '\n', 'p', 'i', 'n', 'k', '\n', 'b', 'l', 'a', 'c', 'k'] 

Dopo questo io uso .remove() ma viene rimosso un solo '\n' e il codice diventa più complicato a precisare i colori.

+6

'str.split ('\ n')' – mgibsonbr

risposta

10

Volete your_str.splitlines(), o forse solo your_str.split('\n')

Utilizzando un ciclo - per l'uso didattico solo:

out = [] 
buff = [] 
for c in your_str: 
    if c == '\n': 
     out.append(''.join(buff)) 
     buff = [] 
    else: 
     buff.append(c) 
else: 
    if buff: 
     out.append(''.join(buff)) 

print out 
+0

ringrazio molto, Funziona. Mi stavo chiedendo se c'è un modo per farlo usando i loop per o mentre? –

+0

@IsraelCA: certo che c'è. Ma perché vorresti? – mgilson

+0

@IsraelCA - Aggiunta una soluzione loop for. Non l'ho provato perché non sono al mio computer con Python al momento, ma penso che dovrebbe funzionare. – mgilson