在 Python 中将字符串拆分为固定大小的块

在 Python 中将字符串拆分为固定大小的块

Split a string into fixed size chunks in Python

将字符串拆分为固定大小的块:

  1. 声明一个存储空列表的变量。
  2. 使用一个步骤迭代字符串的长度范围。
  3. 在每次迭代中,将长度为 N 的字符串附加到列表中。
主程序
my_str = 'abcdefgh' my_list = [] n = 2 for i in range(0, len(my_str), n): my_list.append(my_str[i:i+n]) print(my_list) # 👉️ ['ab', 'cd', 'ef', 'gh'] # -------------------------------------------- # using list comprehension my_list_2 = [my_str[i:i+n] for i in range(0, len(my_str), n)] print(my_list_2) # 👉️ ['ab', 'cd', 'ef', 'gh']

我们使用range该类来获取一系列索引,这些索引代表每个块中的第一个字符。

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

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

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

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

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

请注意,start索引是包含的,而stop索引是排他的。

在每次迭代中,我们从 中的当前项获取起始索引range,并stop通过将起始索引与所需的块长度相加来计算索引。

或者,您可以使用列表理解。

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

列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

for此解决方案是第一个使用循环的代码片段的单行版本

If the string has a length that is an odd number, the last item in the list will
contain fewer characters.

main.py
my_str = 'abcdefghi' n = 2 my_list_2 = [my_str[i:i+n] for i in range(0, len(my_str), n)] print(my_list_2) # 👉️ ['ab', 'cd', 'ef', 'gh', 'i']

You can also use a while loop to split a string every nth character.

main.py
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)

We declared a second variable that stores the exact same string.

On each iteration in the while loop, we append the first n characters of the copied string to the list and remove the first n characters from the copied string.

You can also use the wrap() method to split a string into fixed-size chunks.

To split a string into fixed-size chunks:

  1. Import the wrap() method from the textwrap module.
  2. Pass the string and the max width of each slice to the method.
  3. The wrap() method will split the string into a list with items of max
    length N.
main.py
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因为该方法的默认行为是删除空格。