如何在 Python 中获取字符串的后 N 个字符


字符串操作是 Python 中一项重要的任务。这可能涉及切片字符串、获取 N 个字符等。这些是在文本预处理中必不可少的任务,例如在 NLP 任务、密码和数据安全、字符串理解和编码等中。幸运的是,Python 提供了多种执行字符串操作的方法。在本文中,我们将学习如何在 Python 中获取字符串中的后 N 个字符。

使用 for 循环

循环是大多数编程语言中非常常见的表达式。这使我们能够迭代可迭代对象、生成一系列值等等。由于字符串对象是可迭代的,我们可以利用 for 循环来获取字符串的后 n 个字符。由于可迭代对象的索引从 0 开始,结束并扩展到 length−1,因此字符串后 n 个字符的索引是从 length−n−1 到 length−1。

示例

在下面的示例中,我们创建了一个名为 get_last_n_characters 的函数,它将字符串和 n 作为参数。它是一个非空函数,并返回字符串的后 n 个字符。在函数下,我们声明了一个名为 last_n_characters 的空字符串,并使用 range 表达式迭代字符串的后 n 个字符。我们将字符串的字符追加到空字符串中,并返回最终字符串。

def get_last_n_characters(text, n):
    last_n_characters=""
    for i in range(len(text) - 1, len(text) - n - 1, -1):
        last_n_characters = text[i] + last_n_characters
    return last_n_characters
text = "Hello, world!"
n = 5
result = get_last_n_characters(text, n)
print(f"The last {n} characters of the String are: {result}")

输出

The last 5 characters of the String are: orld!

使用 while 循环

while 循环是 Python 中另一个流行的表达式,就像 for 循环一样。但是,唯一的区别是我们需要在需要弄清楚需要运行循环多少次时使用 while 循环。当我们满足特定条件时,我们就完成循环。

示例

在下面的代码中,我们创建了函数 get_last_n_characters。在这个函数下,我们初始化了一个空字符串。我们通过 while 循环迭代字符串的后 n 个字符,并在每次迭代中,我们将字符追加到已初始化的字符串中。

def get_last_n_characters(text, n):
    last_n_characters = ""
    index = len(text) - 1
    while n > 0 and index >= 0:
        last_n_characters = text[index] + last_n_characters
        index -= 1
        n -= 1
    return last_n_characters

text = "Hello, world!"
n = 9
result = get_last_n_characters(text, n)
print(f"The last {n} characters of the string are: {result}")

输出

The last 9 characters of the string are: o, world!

使用字符串切片

切片字符串是在大多数编程语言中一个重要的概念。在 Python 中,切片使用索引属性的概念。

语法

string[a:b]

这里 string 是字符串对象的名称。这里的 a 指的是我们需要开始切片的索引,b 是我们需要切片的索引。请注意,a 是包含的,但 b 是不包含的。如果我们不指定,Pyon 将默认值为 0。另一方面,如果我们不指定 b,则 Python 将 b 的默认值设置为 n。

示例

在下面的代码中,我们使用了字符串的内置方法来访问后 n 个字符。我们使用了字符串切片,其中我们传递了 -n 作为起始索引,并默认作为结束索引。因此,作为索引属性,该方法会切片字符串并返回字符串的后 n 个字符。

def get_last_n_characters(string, n):
    last_n_characters = string[-n:]
    return last_n_characters
text = "Hello, world!"
n = 5
result = get_last_n_characters(text, n)
print(f"The last {n} characters of the String are: {result}")

输出

The last 5 characters of the String are orld!

使用切片方法

切片方法允许您创建一个切片对象,您可以使用它来提取序列的一部分。我们可以将此切片对象传递给字符串,返回所需的字符。

语法

slice(-start, end)

这里 slice 是一个关键字,也是 Python 中的内置方法。-start 表示我们希望从索引为 -start 的字符开始切片字符串。end 指的是我们需要执行切片的索引。由于我们指定了 None,因此我们将对字符串的最后一个字符进行切片。

示例

在下面的代码中,我们使用了 Python 的 slice 方法来获取字符串的后 n 个字符。我们将第一个参数(即起始索引)定义为 -n,表示我们希望从字符串的后 n 个字符开始切片。我们将结束索引的值设置为 None,表示我们希望切片到最后一个字符。

def get_last_n_characters(string, n):
    last_n_characters = slice(-n, None)
    return string[last_n_characters]

text = "Hello, world!"
n = 5
result = get_last_n_characters(text, n)
print(f"Last {n} characters of the String is: {result}")

输出

Last 5 characters of the String is: orld!

使用 join 和 reversed 方法

在 Python 中,join() 和 reversed() 方法通常用于操作字符串和序列。

join() 方法是一个字符串方法,它将可迭代对象(例如列表或元组)的元素连接成一个字符串。它以可迭代对象作为参数,并返回一个新的字符串,该字符串使用指定的分割符连接元素。

语法

new_string = separator.join(iterable)

这里 new_string 是连接元素后生成的字符串。separator 是用作元素之间分隔符的字符串。iterable 是包含要连接的元素的可迭代对象。

reversed() 方法是 Python 中的内置函数,它返回一个迭代器,该迭代器按相反顺序生成序列的元素。它可以与字符串、列表、元组或任何其他序列类型一起使用。

语法

reversed_sequence = reversed(sequence)

这里 reversed_sequence 是一个迭代器对象,包含按相反顺序排列的序列元素。sequence 是获取反向元素的序列。

示例

我们在下面的代码中结合了 joined、reversed 和索引属性来获取后 n 个字符。reverse 方法反转字符串,切片方法提取前 n 个字符。再次使用索引方法 "[::-1]",我们反转了字符串。这恢复了字符的原始顺序。

def get_last_n_characters(string, n):
    last_n_characters = ''.join(reversed(string))[:n][::-1]
    return last_n_characters
text = "Hello, world. I am testing this message"
n = 6
result = get_last_n_characters(text, n)
print(f"Last {n} characters of the String is: {result}")

输出

Last 6 characters of the String is: essage

使用 deque 和 join 方法

在 Python 中,join() 方法和 collections 模块中的 deque 类通常用于字符串操作和有效管理可迭代对象。

deque 类是 Python 中 collections 模块的一部分,它提供了一个双端队列。它允许有效地对队列的两端进行添加和删除元素的操作。它可以用可迭代对象初始化,也可以不带任何参数初始化。

语法

collections.deque(iterable, maxlen)

这里 deq 是保存元素的 deque 对象。iterable 是可选的,其元素将添加到 deque 的可迭代对象。如果未指定,则创建一个空 deque。maxlen 是另一个可选参数,它指定 deque 的最大长度。如果指定,则添加超过此限制的元素将从相反端删除元素。

通过结合 join() 方法和 deque 类以及指定的 maxlen,例如 join(deque(string, maxlen=n)),您可以有效地提取字符串或序列的一部分,同时限制生成连接字符串的长度。

示例

在下面的示例中,我们首先从 Python 的 collections 库中导入了 deque 方法。接下来,我们使用 deque 方法访问字符串的后 n 个字符。我们将字符串和 maxlen=n 作为参数传递给字符串。我们使用 join 方法将字符串连接到空字符串。

from collections import deque
def get_last_n_characters(string, n):
    last_n_characters = ''.join(deque(string, maxlen=n))
    return last_n_characters
text = "Hello, world. I am testing this message"
n = 11
result = get_last_n_characters(text, n)
print(f"Last {n} characters of the String is: {result}")

输出

Last 11 characters of the String is: his message

结论

在本文中,我们学习了如何使用不同的内置方法和编程技术来获取字符串的后 N 个字符。首先,我们学习了如何在 Python 中使用切片操作来获取字符串的后 N 个字符。接下来,我们看到了使用 slice 方法、字符串方法和一些内置函数(如 deque)来获取字符串的后 N 个字符。我们强烈建议读者尝试这些示例以更好地理解这些主题。

更新于: 2023-07-18

4K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告