如何在Python中删除前导空格?


177

我有一个以多个空格开头的文本字符串,介于2和4之间。

删除前导空格的最简单方法是什么?(即删除某个字符之前的所有内容?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"

Answers:


313

lstrip()方法将删除以字符串开头的前导空格,换行符和制表符:

>>> '     hello world!'.lstrip()
'hello world!'

编辑

正如balpha在注释中指出的那样,为了仅从字符串开头删除空格,lstrip(' ')应使用:

>>> '   hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'

相关问题:


10
但是请注意,该lstrip会删除可能比空格(制表符等)更多的前导空格。通常就是您想要的。如果只想删除空格和空格,请致电“ bla” .lstrip(“”)
balpha

1
@balpha:谢谢指出!我已将其添加到答案中。
coobird

3
已经编程多年了,却不知道这一点,救生员
克里斯·霍克斯

3
对于新的Python程序员来说,可能有用的是python中的字符串是不可变的,因此,如果使用的是字符串'string_a',您可能会认为string_a.lstrip()会更改字符串本身,但实际上您会需要将string_a.lstrip()的值分配给自身或新变量,例如“ string_a = string_a.lstrip()”。
2016年

2
注意:因为有lstrip(),所以也有strip()和rstrip()
亚历山大·斯托尔

85

该函数strip将从字符串的开头和结尾删除空格。

my_str = "   text "
my_str = my_str.strip()

将设置my_str"text"


17

如果要剪切单词前后的空格,请保留中间的空格。
您可以使用:

word = '  Hello World  '
stripped = word.strip()
print(stripped)

值得一提的是,这确实'Hello World'有中间空格,对于任何想知道的人,我想它都已被否决,因为最初的问题专门要求删除前导空格。
conapart3

2
docs.python.org/3/whatsnew/3.0.html 打印是一个功能print语句已替换为print()函数,并使用关键字参数替换了旧print语句的大多数特殊语法(PEP 3105)。
mbrandeis

@mbrandeis该声明在这里有何意义?
MilkyWay90 '18

12

要删除某个字符之前的所有内容,请使用正则表达式:

re.sub(r'^[^a]*', '')

删除所有内容,直到第一个“ a”。[^a]可以替换为您喜欢的任何字符类,例如单词字符。


3
我认为那家伙要求的是“最简单的方法”
Nope

10
是的,但是他也(可能是无意间)要求解决一个更笼统的问题,即“删除某个字符之前的所有内容?”,这就是更笼统的解决方案。
cjs

1

这个问题不会解决多行字符串,但是这是如何使用python的标准库textwrap模块从多行字符串中去除前导空格。如果我们有一个像这样的字符串:

s = """
    line 1 has 4 leading spaces
    line 2 has 4 leading spaces
    line 3 has 4 leading spaces
"""

如果我们print(s)得到如下输出:

>>> print(s)
    this has 4 leading spaces 1
    this has 4 leading spaces 2
    this has 4 leading spaces 3

如果我们使用了textwrap.dedent

>>> import textwrap
>>> print(textwrap.dedent(s))
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.