删除 Python 字符串中的尾部空格

在 Python 中,空格通常用于分隔和创建代码块。

然而,空白也可能出现在意想不到的区域,需要将其删除。

txt = "  string   "
 
print(txt.strip())

输出:

string

字符串的开头或结尾也可能存在空格;字符串末尾的空格是尾部空格,而字符串开头的空格是前导空格。删除空格通常很容易,因为 Python 提供了删除尾部和前导空格的 strip() 方法。

在 Python 中使用 rstrip() 方法去除尾部空格

虽然上面的代码片段非常简单,但情况并非总是如此。

假设包含空格的数据存在于另一个文件中,那么我们被迫使用另一个脚本来尝试删除空格。因此,我们需要创建一个脚本来读取外部文件的内容以对其进行修改。

通常,Python 提供了两种方式,我们可以利用它们来读取外部文件的内容。

在 Python 中读取和打开外部文件的关键函数是 open() 函数,它接受两个参数:文件名和模式。尽管 open() 函数使用 read() 方法返回一个文件对象,我们可以从外部文件中读取我们想要的确切字节数。

使用 rstrip(),我们可以删除尾部的空格,如下面的代码片段所示。

with open("sample.txt")as f:
    for line in f:
        line = line.rstrip()
        if line:
            print(line)

sample.txt

    Mango    
    Oranges    
    Apple    
    Pawpaw    

输出:

    Mango
    Oranges
    Apple
    Pawpaw

在上面的代码片段中,我们使用文本文件外部的 Python 脚本设法删除了字符串右侧的空格,也称为尾部空格。另一方面,也可以使用 lstrip() 方法删除前导空格。

f = open("sample.txt")
for line in f:
        line = line.lstrip()
        if line:
            print(line)
 
f.close()

输出:

Mango    
Oranges    
Apple    
Pawpaw    

或者,我们也可以使用 Python 提供的标准 fileinput 在任何值列表上编写循环。默认情况下,fileinput 模块允许我们以文本模式打开文件输入并确保立即关闭空文件。

此外,该模块还让我们可以自由指定钩子,这是一个函数,它将文件名和我们想要访问文件的模式作为两个主要参数。

使用 fileinput.FileInput() 类,我们还可以创建一个可以与上下文管理器一起使用的实例。这确保如果在执行文件操作期间发生异常,程序不会在没有关闭我们可能已经打开的文件的情况下过早退出。

import fileinput

filename = r"C:\test\sample.txt"

with fileinput.FileInput(filename,
                         inplace = False) as f:
 
    for line in f:
        line = line.rstrip()
        if line:
            print(line)

输出:

    Mango
    Oranges
    Apple
    Pawpaw

尽管 fileinput 模块用于迭代多个输入流,但我们已经将该模块与 fileinput.FileInput() 类和上下文管理器一起使用,以在 with 语句之外创建一个立即退出的实例。我们使用’for’循环对文本文件执行迭代并应用 rsplit() 方法。

fileinput.FileInput() 类还接受几个参数,例如文件名和我们打算打开文件的模式。在这种情况下,我们只指定了三个参数,包括将 inplace 修改设置为 False,因为我们不打算对文件执行任何就地编辑。