Подтвердить что ты не робот

Python: удаление пробелов из объектов списка

У меня есть список объектов, добавленных из базы данных mysql и содержащих пробелы. Я хочу удалить пробелы, такие как ниже, но использование кода im не работает?

hello = ['999 ',' 666 ']

k = []

for i in hello:
    str(i).replace(' ','')
    k.append(i)

print k
4b9b3361

Ответ 1

Строки в Python неизменяемы (это означает, что их данные не могут быть изменены), поэтому метод replace не изменяет строку - он возвращает новую строку. Вы можете исправить свой код следующим образом:

for i in hello:
    j = i.replace(' ','')
    k.append(j)

Однако лучший способ достичь вашей цели - использовать понимание списка. Например, следующий код удаляет ведущие и конечные пробелы из каждой строки в списке с помощью strip:

hello = [x.strip(' ') for x in hello]

Ответ 2

Учет списка [num.strip() for num in hello] является самым быстрым.

>>> import timeit
>>> hello = ['999 ',' 666 ']

>>> t1 = lambda: map(str.strip, hello)
>>> timeit.timeit(t1)
1.825870468015296

>>> t2 = lambda: list(map(str.strip, hello))
>>> timeit.timeit(t2)
2.2825958750515269

>>> t3 = lambda: [num.strip() for num in hello]
>>> timeit.timeit(t3)
1.4320335103944899

>>> t4 = lambda: [num.replace(' ', '') for num in hello]
>>> timeit.timeit(t4)
1.7670568718943969

Ответ 3

result = map (lambda x: x.strip(), hello)

Ответ 4

Строковые методы возвращают измененную строку.

k = [x.replace(' ', '') for x in hello]

Ответ 5

Предполагая, что вы не хотите удалять внутренние пространства:

def normalize_space(s):
    """Return s stripped of leading/trailing whitespace
    and with internal runs of whitespace replaced by a single SPACE"""
    # This should be a str method :-(
    return ' '.join(s.split())

replacement = [normalize_space(i) for i in hello]

Ответ 6

replace() не работает на месте, вам нужно присвоить его результат чему-то. Кроме того, для более сжатого синтаксиса вы можете вытеснить цикл for одним слоем: hello_no_spaces = map(lambda x: x.replace(' ', ''), hello)

Ответ 7

for element in range(0,len(hello)):
      d[element] = hello[element].strip()