Как удалить все пробелы из строки в Python?

Рейтинг: 12Ответов: 3Опубликовано: 08.09.2014

Нагуглил функцию strip(), но она удаляет только первый и последний пробел, а мне нужно все. Например, если a = ' sd dfsdf dfsfs', то нужно получить a = 'sddfsdfdfsfs'. Есть ли такая функция или надо через цикл как-то делать?

Ответы

▲ 30Принят
a.replace(' ', '')
▲ 14

strip() может удалить не только пробел, но и табы и другие символы, которые считаются пробелом, включая Юникодные пробелы, если strip() вызван для Юникодной строки:

>>> import string
>>> string.whitespace
'\t\n\x0b\x0c\r '
>>> string.whitespace.strip()
''
>>> import sys
>>> s = ''.join(unichr(i) for i in xrange(sys.maxunicode) if unichr(i).isspace())
>>> s[:15]
u'\t\n\x0b\x0c\r\x1c\x1d\x1e\x1f \x85\xa0\u1680\u180e\u2000'
>>> s.strip()
u''

Поэтому аналог strip(), который удаляет пробел во всей строке: s = ''.join(s.split()).

Или, тоже самое, используя регулярные выражения: s = re.sub(r'\s+', '', s, flags=re.UNICODE).

Или, в коде, где важна производительность, bytes.translate() может быть использован, чтобы удалить все стандартные (string.whitespace в С локале) пробелы из ascii строки:

>>> b'a\tb\nc'.translate(None, b'\t\n\v\f\r ')
'abc'
▲ 5

Если неизвестно количество пробелов, и табов, самый простой способ:

a = 'Some        string   with    meny          space or tabs'

b = a.split()
b = ''.join(b)

b >>> Somestringwithmenyspaceortabs