2012-11-01 14 views
7

Powiel możliwe:
split a string in pythonJak przekonwertować łańcuch znaków, który zawiera znaki nowej linii na listę w języku Python?

chcę to zmienić:

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

do tego:

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

Próbowałem kilka fo r i podczas pętli i nie byli w stanie tego zrobić. Chcę tylko, aby znak nowej linii został usunięty, uruchamiając następny element. Powiedziano mi używać:

list(str) 

co daje

['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'] 

Po tym używam .remove() ale tylko jeden '\n' jest usuwany, a kod staje się bardziej skomplikowane zaklęcie kolory.

+6

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

Odpowiedz

10

Chcesz your_str.splitlines(), lub ewentualnie po prostu your_str.split('\n')

za pomocą pętli for - tylko do użytku instruktażowe:

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

bardzo dziękuję, to działa. Zastanawiam się, czy istnieje sposób, aby to zrobić, korzystając z pętli lub podczas pętli? –

+0

@IsraelCA - Pewnie, że jest. Ale dlaczego miałbyś chcieć? – mgilson

+0

@IsraelCA - Dodano rozwiązanie pętli for. Nie testowałem tego, ponieważ nie jestem teraz na moim komputerze z pytonem, ale myślę, że to powinno działać. – mgilson

Powiązane problemy