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

Posted

技术标签:

【中文标题】如何删除 Python 中的前导空格?【英文标题】:How do I remove leading whitespace in Python? 【发布时间】:2010-10-31 20:20:04 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

编辑

As balpha pointed out in the comments,为了从字符串的开头删除个空格,应该使用lstrip(' ')

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

相关问题:

Trimming a string in Python

【讨论】:

请注意,lstrip 同时删除前导 whitespace 可能更多的是空格(制表符等)。这通常是你想要的。如果您只想删除空格和空格,请调用“ bla”.lstrip(" ") @balpha:感谢您指出这一点!我已将其添加到答案中。 编程多年不知道这个,救命稻草 对于新的 Python 程序员来说,注意 Python 中的字符串是不可变的可能很有用,所以如果你正在使用字符串 'string_a',你可能会认为 string_a.lstrip() 会改变字符串本身,但实际上您需要将 string_a.lstrip() 的值分配给自身或新变量,例如“string_a = string_a.lstrip()”。 注意:有 lstrip() 也有 strip() 和 rstrip()【参考方案2】:

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

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

my_str 设置为"text"

【讨论】:

【参考方案3】:

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

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

删除直到第一个'a'的所有内容。 [^a] 可以替换成任何你喜欢的字符类,比如单词字符。

【讨论】:

我认为这家伙要求的是“最简单最简单的方法” 没错,但他也(可能是无意中)要求解决一个更普遍的问题,“即删除某个字符之前的所有内容?”,这是更普遍的解决方案。跨度> 【参考方案4】:

如果你想剪掉单词前后的空格,但保留中间的空格。 你可以使用:

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

【讨论】:

值得注意的是,这个确实打印'Hello World',中间空格完好无损,对于任何想知道的人,我猜它已被否决,因为最初的问题是专门问的删除前导个空格。 docs.python.org/3/whatsnew/3.0.html Print 是一个函数 print 语句已被替换为 print() 函数,使用关键字参数替换旧 print 语句 (PEP 3105) 的大部分特殊语法。跨度> @mbrandeis 该声明与这里有什么关系?【参考方案5】:

该问题并未涉及多行字符串,但这里是您如何使用python's standard library textwrap module 从多行字符串中去除前导空格。如果我们有这样的字符串:

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

【讨论】:

【参考方案6】:

在清理文本时使用正则表达式是最佳做法

def removing_leading_whitespaces(text):
     return re.sub(r"^\s+","",text)

应用上述功能

removing_leading_whitespaces("  Example")
"  Example"   -> "Example"

removing_leading_whitespaces("  Example  ")
"  Example  " -> "Example  "

removing_leading_whitespaces("    Example")
"    Example" -> "Example"

【讨论】:

【参考方案7】:

对于任何字符串处理,我个人最喜欢的是剥离、拆分和连接(按此顺序):

>>> ' '.join("   this is my  badly spaced     string   ! ".strip().split())
'this is my badly spaced string !'

一般来说,将它应用于所有字符串处理会很好。

执行以下操作:

    首先它会删除 - 这会删除前导和结束空格。 然后它会拆分 - 默认情况下会在空白处执行此操作(因此它甚至会获得制表符和换行符)。问题是这会返回一个列表。 最后 join 遍历列表,并在每个列表之间加入一个空格。

【讨论】:

以上是关于如何删除 Python 中的前导空格?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 MySQL 字段中的前导和尾随空格?

如何从 Python 数组中删除多余的空格? [复制]

如何删除前导和尾随空格?

如何在Java中仅删除字符串的尾随空格并保留前导空格?

如何取回使用 .trim 删除的所有原始前导和尾随空格? [复制]

如何删除字符串中的前导零和尾随零? Python