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

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

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

当前回答

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

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"

其他回答

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

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

Edit

正如balpha在评论中指出的,为了只删除字符串开头的空格,应该使用lstrip(' '):

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

相关问题:

在Python中修饰字符串

我个人最喜欢的字符串处理是剥离,分裂和连接(按此顺序):

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

一般来说,它可以很好地应用于所有字符串处理。

它的作用如下:

首先,它去掉了开头和结尾空格。 然后它会分割——默认情况下它会在空格上执行此操作(因此它甚至会获得制表符和换行符)。它返回一个列表。 最后,join遍历列表,并在每个列表之间使用一个空格进行连接。

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

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

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

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

删除第一个“a”之前的所有内容。[^a]可以替换为任何你喜欢的字符类,比如字字符。

这个问题不涉及多行字符串,但下面是如何使用python的标准库textwrap模块从多行字符串中剥离前导空白。如果我们有这样一个字符串:

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

如果我们打印(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