在 Python 中每隔第 n 个字符拆分一个字符串

在 Python 中每隔第 n 个字符拆分一个字符串

Split a string every nth character in Python

每第 n 个字符拆分一个字符串:

  1. 使用列表理解以步骤 N 迭代一个范围。
  2. 在每次迭代中,使用字符串切片来选择字符串的一部分。
  3. 该列表将包含最大长度为 N 的字符串切片。
主程序
my_str = 'abcdefgh' n = 2 my_list = [my_str[idx:idx + n] for idx in range(0, len(my_str), n)] print(my_list) # 👉️ ['ab', 'cd', 'ef', 'gh']

range类通常用于在循环中循环特定次数,for并采用以下参数:

姓名 描述
start 表示范围开始的整数(默认为0
stop 向上,但不包括提供的整数
step 范围将由每 N 个数字组成,从startstop(默认为1

示例中的range对象包含每个切片的第一个字符的索引。

主程序
my_str = 'abcdefgh' n = 2 # 👇️ [0, 2, 4, 6] print(list(range(0, len(my_str), n)))

字符串切片的语法是my_str[start:stop:step].

start值是包含的,stop是不包含的(最多,但不包括)。

我们stop通过添加2到起始索引来计算索引。该示例每 2 个字符拆分一次字符串。

主程序
my_str = 'abcdefgh' n = 2 my_list = [my_str[idx:idx + n] for idx in range(0, len(my_str), n)] print(my_list) # 👉️ ['ab', 'cd', 'ef', 'gh']

如果字符串的长度为奇数,则列表中的最后一项将包含较少的字符。

主程序
my_str = 'abcdefghi' n = 2 my_list = [my_str[idx:idx + n] for idx in range(0, len(my_str), n)] print(my_list) # 👉️ ['ab', 'cd', 'ef', 'gh', 'i']

您还可以使用while循环每第 n 个字符拆分一个字符串。

主程序
my_str = 'abcdefghi' my_str_copy = my_str my_list = [] n = 2 while my_str_copy: my_list.append(my_str_copy[:n]) my_str_copy = my_str_copy[n:] # 👇️ ['ab', 'cd', 'ef', 'gh', 'i'] print(my_list)

我们声明了第二个变量来存储完全相同的字符串。

在循环中的每次迭代中while,我们将复制字符串的第一个字符附加到列表中,并从复制字符串中删除第一个字符。 nn

您也可以使用模块中的wrap()方法textwrap

每 n 个字符拆分一个字符串:

  1. wrap()textwrap模块导入方法。
  2. 将字符串和每个切片的最大宽度传递给该方法。
  3. wrap()方法会将字符串拆分为一个列表,其中包含最大长度为 N 的项目。
主程序
from textwrap import wrap my_str = 'abcdefgh' n = 2 my_list = wrap( my_str, n, drop_whitespace=False, break_on_hyphens=False ) # 👇️ ['ab', 'cd', 'ef', 'gh'] print(my_list)

textwrap.wrap
方法
会将
字符串拆分为一个列表,因此每个列表项的长度最多为 N 个字符。

我们将drop_whitespace关键字参数设置为False因为该方法的默认行为是删除空格。