目录
Split a string without removing the delimiter in Python
拆分字符串而不删除 Python 中的分隔符
要在不删除定界符的情况下拆分字符串:
- 使用
str.split()
方法将字符串拆分为列表。 - 使用列表理解来遍历列表。
- 在每次迭代中,将分隔符添加到项目中。
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']
我还写了一篇关于
如何使用多个定界符拆分字符串的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: