如何从Python中的字符串中删除前导空格和尾随空格?
例如:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
答案 0 :(得分:1608)
只有一个空间,还是所有这样的空间?如果是第二个,则字符串已经有.strip()
方法:
>>> ' Hello '.strip()
'Hello'
>>> ' Hello'.strip()
'Hello'
>>> 'Bob has a cat'.strip()
'Bob has a cat'
>>> ' Hello '.strip() # ALL spaces at 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
的参数,即:
>>> " Hello\n".strip(" ")
'Hello\n'
答案 1 :(得分:247)
如上面的答案所指出
myString.strip()
将删除所有前导和尾随空格字符,例如\ n,\ r \ n,\ t \ t,\ t \ t \ t,空格。
为了更加灵活,请使用以下
myString.lstrip()
myString.rstrip()
myString.strip('\n')
或myString.lstrip('\n\r')
或myString.rstrip('\n\t')
,依此类推。答案 2 :(得分:115)
strip
不限于空格字符:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
答案 3 :(得分:49)
这将删除myString
中所有前导和尾随空格:
myString.strip()
答案 4 :(得分:21)
你想要strip():
myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]
for phrase in myphrases:
print phrase.strip()
答案 5 :(得分:3)
这也可以用正则表达式完成
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
答案 6 :(得分:1)
作为初学者,这个线程让我很头疼。因此想出了一个简单的快捷方式。
尽管 str.strip()可以删除前导空格和尾随空格,但字符之间的空格不起作用。
words=input("Enter the word to test")
# If I have a user enter discontinous threads it becomes a problem
# input = " he llo, ho w are y ou "
n=words.strip()
print(n)
# output "he llo, ho w are y ou" - only leading & trailing spaces are removed
取而代之的是 使用str.replace() 来使内容更有意义,同时减少错误,甚至更多。 以下代码可以概括使用str.replace()
def whitespace(words):
r=words.replace(' ','') # removes all whitespace
n=r.replace(',','|') # other uses of replace
return n
def run():
words=input("Enter the word to test") # take user input
m=whitespace(words) #encase the def in run() to imporve usability on various functions
o=m.count('f') # for testing
return m,o
print(run())
output- ('hello|howareyou', 0)
在diff中继承相同内容时可能会有所帮助。功能。
答案 7 :(得分:1)
为了删除在Pyhton中运行完成的代码或程序时引起大量缩进错误的“空白”。只需执行以下操作;显然,如果Python一直在告诉错误是第1,2,3,4,5等行中的缩进...,只需来回修正该行即可。
但是,如果仍然遇到与键入错误,运算符等有关的程序问题,请确保已阅读错误Python为何对您大吼大叫:
首先要检查的是您拥有 缩进权。如果这样做,请检查是否有 在代码中混合使用制表符和空格。
记住:代码 (对您而言)将看起来不错,但解释器拒绝运行它。如果 您对此表示怀疑,一种快速的解决方法是将您的代码放入 在“ IDLE编辑”窗口中,然后选择“编辑...”。 菜单系统,然后选择“格式...”“取消制表区域”。 如果您将制表符与空格混合使用,这将转换您所有的 一键切换到空格(并解决所有缩进问题)。
答案 8 :(得分:0)
我想删除字符串中太多的空格(不仅在字符串的开头或结尾,而且在字符串之间)。我这样做是因为我不知道该怎么做:
string = "Name : David Account: 1234 Another thing: something "
ready = False
while ready == False:
pos = string.find(" ")
if pos != -1:
string = string.replace(" "," ")
else:
ready = True
print(string)
这将替换一个空格中的双精度空格,直到不再有双精度空格
答案 9 :(得分:0)
我找不到想要的解决方案,所以我创建了一些自定义函数。您可以尝试一下。
def cleansed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
# return trimmed(s.replace('"', '').replace("'", ""))
return trimmed(s)
def trimmed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
ss = trim_start_and_end(s).replace(' ', ' ')
while ' ' in ss:
ss = ss.replace(' ', ' ')
return ss
def trim_start_and_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
return trim_start(trim_end(s))
def trim_start(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in s:
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(chars).lower()
def trim_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in reversed(s):
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(reversed(chars)).lower()
s1 = ' b Beer '
s2 = 'Beer b '
s3 = ' Beer b '
s4 = ' bread butter Beer b '
cdd = trim_start(s1)
cddd = trim_end(s2)
clean1 = cleansed(s3)
clean2 = cleansed(s4)
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s1, len(s1), cdd, len(cdd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s2, len(s2), cddd, len(cddd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s3, len(s3), clean1, len(clean1)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s4, len(s4), clean2, len(clean2)))
答案 10 :(得分:0)
如果您要从左侧和右侧修剪指定数量的空格,可以执行以下操作:
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:
break
for i in range(1, num_of_trailing+1):
if text[-i] == " ":
text[-i] = ""
else:
break
return ''.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"
答案 11 :(得分:0)
如何在Python中从字符串中删除开头和结尾的空格?
因此,以下解决方案也将删除前导和尾随空格以及中间空格。就像您需要获取不带多个空格的清晰字符串值一样。
>>> str_1 = ' Hello World'
>>> print(' '.join(str_1.split()))
Hello World
>>>
>>>
>>> str_2 = ' Hello World'
>>> print(' '.join(str_2.split()))
Hello World
>>>
>>>
>>> str_3 = 'Hello World '
>>> print(' '.join(str_3.split()))
Hello World
>>>
>>>
>>> str_4 = 'Hello World '
>>> print(' '.join(str_4.split()))
Hello World
>>>
>>>
>>> str_5 = ' Hello World '
>>> print(' '.join(str_5.split()))
Hello World
>>>
>>>
>>> str_6 = ' Hello World '
>>> print(' '.join(str_6.split()))
Hello World
>>>
>>>
>>> str_7 = 'Hello World'
>>> print(' '.join(str_7.split()))
Hello World
如您所见,这将删除字符串中的所有多个空格(所有输出均为Hello World
)。位置无关紧要。但是,如果您确实需要开头和结尾的空格,则可以找到strip()
。