Этот вопрос только что заставил меня говорить с коллегами с работы о раздевании в течение 3 минут. Любой, кто присоединится к нему на полпути, подумал бы, что мы все немного работаем по ночам.
Whitecat
Ответы:
1739
Всего один пробел или все подряд пробелы? Если второе, то у строк уже есть .strip()метод:
>>>' Hello '.strip()'Hello'>>>' Hello'.strip()'Hello'>>>'Bob has a cat'.strip()'Bob has a cat'>>>' Hello '.strip()# ALL consecutive spaces at both ends removed'Hello'
Если вам нужно удалить только один пробел, вы можете сделать это с помощью:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s
>>> strip_one_space(" Hello ")' Hello'
Также обратите внимание, что str.strip()удаляются и другие пробельные символы (например, табуляции и новые строки). Чтобы удалить только пробелы, вы можете указать символ для удаления в качестве аргумента strip, то есть:
Если вам нужна функция полосы, например, функция карты, вы можете получить к ней доступ через str.strip (), например, map (str.strip, collection_of_s)
Ward
1
Есть ли способ обрезать только пробелы на концах?
Нихил Гиррадж
2
@killthrush Спасибо за ссылку, но я думаю, что вы имели в виду rstrip()функцию. :-)
Nikhil Girraj
14
Иногда я чувствую, что python намеренно избегает общепринятых и значимых имен, которые подавляющее большинство языков используют для того, чтобы быть «уникальными» и «разными» - stripвместо trim, isinstanceвместо instanceof, listвместо arrayи т. Д. И т. Д. Почему бы просто не использовать имена, с которыми все знакомы ?? Боже: P
Гершом
3
@GershomMaes в stripслучае, я полностью согласен, но список полностью отличается от массива.
JFA
262
Как указано в ответах выше
myString.strip()
удалит все начальные и конечные пробельные символы, такие как \ n, \ r, \ t, \ f, пробел.
Для большей гибкости используйте следующее
Снимает только ведущие пробельные символы:myString.lstrip()
Удаляет только конечные пробельные символы:myString.rstrip()
Удаляет определенные пробельные символы: myString.strip('\n')или myString.lstrip('\n\r')или myString.rstrip('\n\t')и так далее.
Более подробная информация доступна в документации
Этот пост имеет только код, он не объясняет, что делает функция. Удаляет ли это начальные или конечные пробелы или оба? Это удаляет только пробелы или все виды пробелов? Можете ли вы сделать так, чтобы он удалял только пробелы, или есть другая функция для этого? Если он удаляет как начальные, так и конечные пробелы, можете ли вы сделать так, чтобы он удалял только один из двух, или есть (или есть) другая функция (и) для выполнения работы? myString.strip()не отвечает ни на один из заданных мной вопросов.
EKons
8
Чтобы быть справедливым, OP специально попросил метод, который удаляет начальные и конечные пробелы из строки. Достаточно хороший ответ для меня
Денис Линс
21
Вы хотите strip ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Я хотел удалить слишком много пробелов в строке (также между строкой, а не только в начале или в конце). Я сделал это, потому что я не знаю, как это сделать иначе:
Если вы хотите обрезать указанное количество пробелов слева и справа , вы можете сделать это:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)for i in range(num_of_leading):if text[i]==" ":
text[i]=""else:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.join(text)
txt1 =" MY name is "print(remove_outer_spaces(txt1,1,1))# result is: " MY name is "print(remove_outer_spaces(txt1,2,3))# result is: " MY name is "print(remove_outer_spaces(txt1,6,8))# result is: "MY name is"
Как удалить начальные и конечные пробелы из строки в Python?
Таким образом, решение ниже удалит начальные и конечные пробелы, а также промежуточные пробелы. Например, если вам нужно получить четкие строковые значения без нескольких пробелов.
>>> str_1 =' Hello World'>>>print(' '.join(str_1.split()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Как вы можете видеть, это удалит все несколько пробелов в строке (вывод Hello Worldдля всех). Расположение не имеет значения. Но если вам действительно нужны начальные и конечные пробелы, тогда strip()можно найти.
Ответы:
Всего один пробел или все подряд пробелы? Если второе, то у строк уже есть
.strip()
метод:Если вам нужно удалить только один пробел, вы можете сделать это с помощью:
Также обратите внимание, что
str.strip()
удаляются и другие пробельные символы (например, табуляции и новые строки). Чтобы удалить только пробелы, вы можете указать символ для удаления в качестве аргументаstrip
, то есть:источник
rstrip()
функцию. :-)strip
вместоtrim
,isinstance
вместоinstanceof
,list
вместоarray
и т. Д. И т. Д. Почему бы просто не использовать имена, с которыми все знакомы ?? Боже: Pstrip
случае, я полностью согласен, но список полностью отличается от массива.Как указано в ответах выше
удалит все начальные и конечные пробельные символы, такие как \ n, \ r, \ t, \ f, пробел.
Для большей гибкости используйте следующее
myString.lstrip()
myString.rstrip()
myString.strip('\n')
илиmyString.lstrip('\n\r')
илиmyString.rstrip('\n\t')
и так далее.Более подробная информация доступна в документации
источник
strip
также не ограничивается пробельными символами:источник
Это удалит все начальные и конечные пробелы в
myString
:источник
myString.strip()
не отвечает ни на один из заданных мной вопросов.Вы хотите strip ():
источник
Я хотел удалить слишком много пробелов в строке (также между строкой, а не только в начале или в конце). Я сделал это, потому что я не знаю, как это сделать иначе:
Это заменяет двойные пробелы в одном пробеле, пока у вас больше нет двойных пробелов
источник
Я не мог найти решение для того, что искал, поэтому я создал несколько пользовательских функций. Вы можете попробовать их.
источник
Если вы хотите обрезать указанное количество пробелов слева и справа , вы можете сделать это:
источник
Это также можно сделать с помощью регулярного выражения
источник
Таким образом, решение ниже удалит начальные и конечные пробелы, а также промежуточные пробелы. Например, если вам нужно получить четкие строковые значения без нескольких пробелов.
Как вы можете видеть, это удалит все несколько пробелов в строке (вывод
Hello World
для всех). Расположение не имеет значения. Но если вам действительно нужны начальные и конечные пробелы, тогдаstrip()
можно найти.источник