2016-11-01 6 views
-1

Здравствуйте, я начал изучать Python, и у меня возникла проблема.
Я хочу заменить каждую пустую строку в списке пробелом ("").
Например, если я вызываю функцию с function(['', 'x', 'x', '', '', 'y', 'y', '', 'a']), я хотел бы вернуть строку ' xx yy a'.Замените пустую строку пробелом

Мой код в настоящее время:

function(a): 
for i in a: 
    if i == None: 
     a[i] = " " 
string = "".join(a) 
return string 
+0

Ну, пустая строка * не * равна 'None'. Пустая строка равна пустой строке: 'if i == ''' ... – deceze

+0

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

+0

Когда вы отправляете код Python, убедитесь, что вы точно воспроизводите свой отступ. Плохой с отступом код Python - это нонсенс. Кроме того, вам нужно 'def' для определения функции. – khelwood

ответ

4

Используйте выражение генератор вместо этого короткого замыкания or:

def function(a): 
    return ''.join(char or ' ' for char in a) 

Если символ не является пустой строкой, то она будет быть использован как есть. В противном случае будет использоваться пробел.

1

чтобы заменить None, ложные и пустые строки

>>> a = ['','11',None,'22',False] 

>>> b=[elem if elem else " " for elem in a] 

>>> ''.join(b) 
    ' 11 22 ' 
>>> 

обратите внимание, что ваш код не заменит «» как «» не является Ни

>>>''==None 

False 

>>> 
+1

Не рекомендуется использовать 'str' в качестве имени переменной. – khelwood

+0

@khelwood - Вообще нет, но у понятий есть своя область, поэтому это не слишком страшно. Но это не совсем нормально. : P – TigerhawkT3

+0

@ TigerhawkT3 В Python 3 у них есть своя область. В Python 2 они этого не делают. – khelwood

Смежные вопросы