在 Python 中每隔第 n 个字符拆分一个字符串
Split a string every nth character in Python
每第 n 个字符拆分一个字符串:
- 使用列表理解以步骤 N 迭代一个范围。
- 在每次迭代中,使用字符串切片来选择字符串的一部分。
- 该列表将包含最大长度为 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 个数字组成,从start 到stop (默认为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
,我们将复制字符串的第一个字符附加到列表中,并从复制字符串中删除第一个字符。 n
n
您也可以使用模块中的wrap()
方法textwrap
。
每 n 个字符拆分一个字符串:
wrap()
从textwrap
模块导入方法。- 将字符串和每个切片的最大宽度传递给该方法。
- 该
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
因为该方法的默认行为是删除空格。