删除尾部换行的方法

304 阅读4分钟

使用 [str.rstrip()](https://blog.finxter.com/python-string-rstrip/)来删除一个尾部换行符。给定一个字符串s ,通过调用s.rstrip('\n') ,创建一个没有尾部换行符的新字符串。如果你需要存储在原始变量中的字符串,只需将结果赋给原始变量。

这里有一个例子。

>>> my_string = 'hello world\n'
>>> my_string.rstrip('\n')
'hello world'

这实际上是删除了所有尾部的换行符。

>>> my_string = 'hello world\n\n\n\n\n\n'
>>> my_string.rstrip('\n')
'hello world'

如果你想删除所有的尾部空白,请使用str.rstrip() 方法,不要像这样的参数。

>>> my_string = 'hello world\n    \n\n  \t \n\n\n'
>>> my_string.rstrip()
'hello world'

接下来,让我们更详细地了解一下这些替代方法

方法1:用rstrip()删除字符串中的单个尾部换行符

问题。从字符串中删除单个换行符'\n'

你可以通过使用右键方法来解决这个问题 [str.rstrip()](https://blog.finxter.com/python-string-rstrip/)来解决这个问题,正如你在本文开始时已经看到的那样。

str.strip() 方法修剪右边的空白处,并返回一个新的字符串。如果你传递一个字符串字符参数str.strip(char) ,它将删除作为参数传递的尾部字符。

这是一个简单的例子,我们打印带有和不带有尾部空白字符的字符串。

my_string = 'hello world\n'

print(my_string)
my_string = my_string.rstrip('\n')
print(my_string)

这是输出结果--首先是带有尾部换行的原始字符串(代码中突出显示),其次是没有尾部换行的新字符串。

hello world

hello world

下面的视频对string.rstrip() 方法以及其他的字符串方法做了一个简短的介绍--请自由观看,以提高你的Python技能!

但是如果你不想只删除一个尾部换行符'\n' ,而是想删除多个换行符(例如:'\n\n\n'),怎么办?

接下来让我们来了解一下!

方法2:用string.rstrip()从一个字符串中删除多个尾部换行符

问题。从字符串中删除多个换行符(例如:'\n\n\n' )。

string.rstrip('\n') ,不仅删除单个尾部换行符,而且删除尽可能多的换行符。

my_string = 'hello world\n\n\n'

print(my_string)
my_string = my_string.rstrip('\n')
print(my_string)

下面是输出结果--首先是带有尾部换行的原始字符串(代码中突出显示),其次是没有换行的新字符串。

hello world



hello world

到目前为止,我们已经看到如何从一个给定的字符串中删除一个或多个尾部换行符'\n'

但是,如果你想从一个字符串中删除所有的 尾部空白--换行符'\n' ,表格字符'\t' ,以及空位' ' ,该怎么办?

方法3:用str.rstrip()删除一个字符串的所有尾部空白。

问题。从一个字符串中删除所有的 尾部白点--换行符'\n' ,表格字符'\t' ,以及空位' '

要删除所有的尾部空白,不仅仅是换行符'\n' ,你可以使用str.rstrip() 方法,不需要任何参数。它会自动创建一个没有尾部空白的新字符串。

然后你可以把这个新的字符串分配给你的原始变量。

下面是一个带有混合尾部空白序列的字符串的例子'\n\n\n \t \n '

my_string = 'hello world\n\n\n   \t  \n  '

print(my_string)
my_string = my_string.rstrip()
print(my_string)

输出结果显示,所有的尾部空白字符都已被删除。

hello world


   	  
  
hello world

好吧,还缺少一些东西--如果你只想删除一个(而不是多个)尾部换行字符怎么办?

接下来让我们来看看!

方法4:只删除一个尾部换行符

问题。如果一个字符串中有一个尾部换行符,那么就去掉一个换行符。

一个纯粹的Python单线程方法是使用三元运算符 s[:-1] if s[-1] == '\n' else s ,只删除一个尾部换行符'\n' 。这里是如何分解的。

  • 检查条件if s[-1] == '\n' ,找出字符串是否以换行符结束。
  • 如果是,使用切分法 s[:-1] ,创建一个除了最后一个尾部换行符以外的字符串。
  • 如果不是,就简单地使用原始字符串,不做任何改变--它没有尾部换行符。

下面是一个关于如何使用三元运算符的例子。

>>> my_string = 'hello world\n\n'
>>> my_string = my_string[:-1] if my_string[-1] == '\n' else my_string
>>> my_string
'hello world\n'

你可以在我的教程视频中了解更多关于三元运算符的信息。

一个在语义上完全相同的解决方案是下面的代码,我们打印删除单个换行符之前和之后的字符串。

my_string = 'hello world\n\n\n'

print(my_string)
print('(end)')

# Remove single trailing newline char
if my_string[-1] == '\n':
    my_string = my_string[:-1]
    
print(my_string)
print('(end)')

输出结果显示,只有一个换行符被删除。

hello world



(end)
hello world


(end)

你可以看到正好有一个换行符被删除了。

总结

要从你的字符串中删除一个或多个尾部空白字符,请使用不带参数的string.rstrip() 方法。如果你特别需要只删除换行符,请将'\n' 作为参数传给string.rstrip('\n')