如何在 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 个字符。我们强烈建议读者尝试这些示例以更好地理解这些主题。