在不删除 Python 中的分隔符的情况下拆分字符串

目录

Split a string without removing the delimiter in Python

  1. 在不删除 Python 中的分隔符的情况下拆分字符串
  2. 使用 rstrip() 删除尾随分隔符
  3. 使用列表切片删除尾随定界符
  4. 将分隔符拆分为单独的列表项
  5. 使用 for 循环拆分字符串而不删除分隔符

拆分字符串而不删除 Python 中的分隔符

要在不删除定界符的情况下拆分字符串:

  1. 使用str.split()方法将字符串拆分为列表。
  2. 使用列表理解来遍历列表。
  3. 在每次迭代中,将分隔符添加到项目中。
主程序
my_str = 'bobby_hadz_com' delimiter = '_' my_list = [x+delimiter for x in my_str.split(delimiter) if x] # 👇️ ['bobby_', 'hadz_', 'com_'] print(my_list)

第一步是使用该str.split()方法将字符串拆分为列表。

主程序
my_str = 'bobby_hadz_com' delimiter = '_' # 👇️ ['bobby', 'hadz', 'com'] print(my_str.split(delimiter))

一旦我们有了一个字符串列表,我们就可以使用
列表理解来迭代它,为每个列表项添加分隔符。

主程序
my_str = 'bobby_hadz_com' delimiter = '_' my_list = [x+delimiter for x in my_str.split(delimiter) if x] # 👇️ ['bobby_', 'hadz_', 'com_'] print(my_list)
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

str.split ()方法使用定界符将字符串拆分为子字符串列表。

该方法采用以下 2 个参数:

姓名 描述
分隔器 在每次出现分隔符时将字符串拆分为子字符串
最大分裂 最多maxsplit完成拆分(可选)

使用 rstrip() 删除尾随分隔符

如果您需要删除尾随分隔符,请使用该str.rstrip()方法。

主程序
my_str = 'bobby_hadz_com' delimiter = '_' my_list = [x+delimiter for x in my_str.split(delimiter) if x] # 👇️ ['bobby_', 'hadz_', 'com_'] print(my_list) my_list[-1] = my_list[-1].rstrip(delimiter) print(my_list) # 👉️ ['bobby_', 'hadz_', 'com']

我们使用该str.rstrip()方法从最后一个列表元素中删除尾随定界符。

str.rstrip方法将包含字符字符串作为参数,并返回删除了指定尾随字符的字符串副本。

主程序
my_str = 'bobbyhadz.com' result = my_str.rstrip('ocm.') print(result) # 👉️ 'bobbyhadz'

该方法不会更改原始字符串,它会返回一个新字符串。字符串在 Python 中是不可变的。

使用列表切片删除尾随分隔符

您还可以使用列表切片来删除尾随定界符。

主程序
my_str = 'bobby_hadz_com' delimiter = '_' my_list = [x+delimiter for x in my_str.split(delimiter) if x] # 👇️ ['bobby_', 'hadz_', 'com_'] print(my_list) my_list[-1] = my_list[-1][:-len(delimiter)] print(my_list) # 👉️ ['bobby_', 'hadz_', 'com']

列表切片的语法是a_list[start:stop:step].

我们只stop在切片中指定了一个负索引。

负停止索引可用于省略最后 N 个字符。

主程序
my_str = 'bobby_hadz_com' print(my_str[:-1]) # bobby_hadz_co print(my_str[:-2]) # bobby_hadz_c print(my_str[:-3]) # bobby_hadz_

将分隔符拆分为单独的列表项

如果您需要将分隔符拆分为列表中的单独项,请使用该
re.split()方法。

主程序
import re my_str = 'bobby_hadz_com' my_list = re.split(r'(_)', my_str) # 👇️ ['bobby', '_', 'hadz', '_', 'com'] print(my_list)

re.split方法接受一个模式和一个字符串,并在每次出现该模式拆分字符串。

正则表达式中的括号匹配里面的任何内容,并指示组的开始和结束。

组的内容在比赛结束后仍然可以检索。

即使我们在下划线处分割字符串,我们仍然会在结果中包含下划线。

使用 for 循环拆分字符串而不删除分隔符

您还可以使用for 循环在不删除分隔符的情况下拆分字符串。

主程序
my_str = 'bobby_hadz_com' my_list = [] delimiter = '_' for item in my_str.split(delimiter): if item: my_list.append(item + delimiter) print(my_list) # 👉️ ['bobby_', 'hadz_', 'com_']

我们使用循环来迭代调用字符串for的结果。split()

在每次迭代中,我们将当前项和分隔符附加到新列表中。

str.rstrip()如果您需要从最后一个列表项中删除分隔符,则可以使用该方法。

主程序
my_str = 'bobby_hadz_com' my_list = [] delimiter = '_' for item in my_str.split(delimiter): if item: my_list.append(item + delimiter) print(my_list) # 👉️ ['bobby_', 'hadz_', 'com_'] my_list[-1] = my_list[-1].rstrip(delimiter) print(my_list) # 👉️ ['bobby_', 'hadz_', 'com']

列表中的最后一个元素的索引为,因此我们将其重新分配给调用-1的结果。rstrip()

您还可以使用列表切片来删除尾随定界符。

主程序
my_str = 'bobby_hadz_com' my_list = [] delimiter = '_' for item in my_str.split(delimiter): if item: my_list.append(item + delimiter) print(my_list) # 👉️ ['bobby_', 'hadz_', 'com_'] my_list[-1] = my_list[-1][:-len(delimiter)] print(my_list) # 👉️ ['bobby_', 'hadz_', 'com']

我还写了一篇关于
如何使用多个定界符拆分字符串的文章。

想了解更多关于在 Python 中拆分字符串的信息吗? 查看这些资源: 在 Python 中将字符串拆分为固定大小的块在 Python 中拆分字符串并获取第一个或最后一个元素

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: