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

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

hello = ['999 ',' 666 '] k = [] for i in hello: str(i).replace(' ','') k.append(i) print k 

  • Как разделить, но игнорировать разделители в цитируемых строках, в python?
  • Изменение регистра (верхний / нижний) при добавлении данных через админ-сайт Django
  • TFIDF вычисляет путаницу
  • numpy вокруг / rint slow по сравнению с astype (int)
  • хранимые процедуры с sqlAlchemy
  • Как сделать SWIG в VS2010?
  • Ошибка компиляции Android с помощью buildozer
  • URL-адрес успеха Django с использованием kwargs
  • 7 Solutions collect form web for “Python: удаление пробелов из объектов списка”

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

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

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

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

    [num.strip() for num in hello] списка [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 

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

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

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

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

     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] 

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

     for element in range(0,len(hello)): d[element] = hello[element].strip() 
    Python - лучший язык программирования в мире.