2014-02-07 3 views
0
list1= ['34 5\n', '67 37\n', '40 33\n', '99 100\n', '55 22'] 

выше список, что у меня есть, как я могу сделать чтоудаление пробелов и n из списка в python?

['34','5','67','37','40','33','99','100','55','22'] 

Я хочу, чтобы удалить пробелы и «\ п». rstrip, полосы, заменить были опробованы, но ни один из отработанной

list1.rstrip('\n') 
list1.strip('\n') 
list1.remove('\n') 

ответ

7

Используйте пару вложенных списковых, внутренняя из которых разбивает строки на пробелы и внешнее из которых объединяет вложенные списки вместе.

>>> list1= ['34 5\n', '67 37\n', '40 33\n', '99 100\n', '55 22'] 
>>> [x for sublist in [s.split() for s in list1] for x in sublist] 
['34', '5', '67', '37', '40', '33', '99', '100', '55', '22'] 

Или, если это вам не по душе, сделайте это с помощью петель. (Это, вероятно, яснее, чем вложенный список понимания, задумайтесь об этом.)

>>> result = [] 
>>> for s in list1: 
    for num in s.split(): 
     result.append(num) 

>>> result 
['34', '5', '67', '37', '40', '33', '99', '100', '55', '22'] 
0
list2 = [] 
for item1 in list1: 
    split_list = " ".split(item1) 
    for item2 in split_list: 
     list2.append(item2.rstrip()) 
+0

это не разделите строки в каждом элементе. – suspectus

+0

hrmm right, я уже смотрел ту часть. – Cam

+0

Если вы разделили, вам не нужна полоса, поскольку она разбивается на одно или несколько пробелов –

1
from itertools import chain 
list2 = list(chain.from_iterable(map(str.split,list1))) 

вы можете разбить это вниз, чтобы быть немного более читаемым

flatten_list = chain.from_iterable 
list_of_splits = map(str.split,list1) #essentially [s.split() for s in list1] 
list2 = flatten_list(list_of_splits) 
Смежные вопросы