Нагуглил функцию strip(), но она удаляет только первый и последний пробел, а мне нужно все.
Например, если a = ' sd dfsdf dfsfs', то нужно получить a = 'sddfsdfdfsfs'.
Есть ли такая функция или надо через цикл как-то делать?
Asked
Active
Viewed 1.7e+01k times
11
3 Answers
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'
jfs
- 52,361
5
Если неизвестно количество пробелов, и табов, самый простой способ:
a = 'Some string with meny space or tabs'
b = a.split()
b = ''.join(b)
b >>> Somestringwithmenyspaceortabs