如何删除 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 中的前导空格?的主要内容,如果未能解决你的问题,请参考以下文章