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


Как удалить все пробелы в строке python? Например, я хочу строку типа strip my spaces превращается в stripmyspaces, но я не могу этого сделать с strip():

>>> 'strip my spaces'.strip()
'strip my spaces'
7 127

7 ответов:

пользуясь str.поведение split без параметра sep:

>>> s = " \t foo \n bar "
>>> "".join(s.split())
'foobar'

если вы просто хотите удалить пробелы вместо всех пробелов:

>>> s.replace(" ", "")
'\tfoo\nbar'

преждевременная оптимизация

хотя эффективность не является основной целью-написание четкого кода-вот некоторые начальные тайминги:

$ python -m timeit '"".join(" \t foo \n bar ".split())'
1000000 loops, best of 3: 1.38 usec per loop
$ python -m timeit -s 'import re' 're.sub(r"\s+", "", " \t foo \n bar ")'
100000 loops, best of 3: 15.6 usec per loop

обратите внимание, что регулярное выражение кэшируется, так что это не так медленно, как Вы себе представляете. Компиляция его заранее помогает некоторым, но будет иметь значение только на практике, если вы назовем это много раза:

$ python -m timeit -s 'import re; e = re.compile(r"\s+")' 'e.sub("", " \t foo \n bar ")'
100000 loops, best of 3: 7.76 usec per loop

даже если re.sub 11.3 X медленнее, помните, что ваши узкие места, безусловно, в другом месте. Большинство программ не заметят разницы между любой из этих 3 вариантов.

>>> import re
>>> re.sub(r'\s+', '', 'strip my spaces')
'stripmyspaces'

также обрабатывает любые символы пробела, о которых вы не думаете (поверьте мне, их много).

кроме того,

"strip my spaces".translate( None, string.whitespace )

а вот версия Python3:

"strip my spaces".translate(str.maketrans('', '', string.whitespace))

самое простое-использовать replace:

"foo bar\t".replace(" ", "").replace("\t", "")

кроме того, используйте регулярное выражение:

import re
re.sub(r"\s", "", "foo bar\t")

попробуйте регулярное выражение с re.sub. Вы можете найти все пробелы и заменить их пустой строкой.

\s в вашем шаблоне будут совпадать символы пробела-а не только пробел (вкладки, новые строки и т. д.). Вы можете прочитать больше об этом в руководстве.

import re
re.sub(' ','','strip my spaces')

как упоминал Роджер Пэйт следующий код работал для меня:

s = " \t foo \n bar "
"".join(s.split())
'foobar'

Я использую Jupyter Notebook для запуска следующего кода:

i=0
ProductList=[]
while i < len(new_list): 
   temp=''                            # new_list[i]=temp=' Plain   Utthapam  '
   #temp=new_list[i].strip()          #if we want o/p as: 'Plain Utthapam'
   temp="".join(new_list[i].split())  #o/p: 'PlainUtthapam' 
   temp=temp.upper()                  #o/p:'PLAINUTTHAPAM' 
   ProductList.append(temp)
   i=i+2