2013-09-02 1 views
0

Мой список,Как удалить «#» из внутреннего списка?

a=["# abc" ,"def","ghi" ,"jkl #"] 

и я хочу, чтобы мой выход будет, как это,

a=["abc","def","ghi","jkl"] 

Я попробовал этот код, но я не могу раздеться "#"

for item in a: 
    if any("#" in item): 
     item.strip("#") 

Как удалить «#» из внутреннего списка элементов?

ответ

0
a = [b.replace('#', '') for b in a] 

или если вы хотите пространства идти, а

a = [b.replace('#', '').replace(' ', '') for b in a] 
+1

Что делать, если список был '[ '# AB CD е', и т.д.]' – TerryA

+0

Спасибо ... не думали о замене только! немой! – no1

+1

Я дал ответ на вопрос, который он задал, а не что-если –

1

Использование str.strip с '# ' в качестве аргумента для удаления окружающих # и пространства:

>>> [x.strip('# ') for x in a] 
['abc', 'def', 'ghi', 'jkl'] 
2

Есть несколько проблем, с ваш код:

  1. Во-первых, использование any() здесь не требуется. Вы можете просто сделать if "#" in item:

  2. Вместо изменения item (который не будет делать абсолютно ничего), вы хотите, чтобы добавить решение в другой список, например, так:


new = [] 
for item in a: 
    if "#" in item: 
     new.append(item.strip("#")) 

Просто помните, что в python строки неизменяемы, поэтому str.strip() не будет изменять строку на месте.

Кроме того, если вы хотите избавиться от дополнительных пробелов, то вы хотите, чтобы добавить дополнительное пространство в вызове раздеться:

new.append(item.strip("# ")) 

И, наконец, это где списочные приходят удобно:

[i.strip('# ') for i in a]