re.split - 保留匹配的字符串不变?

2024-05-16 10:13:40 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这是完全简单或重复,请让我知道。我已经找不到答案了。你知道吗

Python的重新拆分将破解一个字符串并返回按其发送的参数拆分的字符串列表。如果搜索字符串在括号中,它将保留匹配的字符串,但它将把匹配的字符串放在一个单独的列表元素中。

有没有办法重新拆分只需保留匹配的字符串就可以了?你知道吗

例如:

swars = """Name:  Chewie  Race:  Wookie    Name:  Han Solo  Race: Human
Name:  Jabba the Hutt  Race: Hutt"""

如果我想把这个字符串分解成名称条目,我会使用重新拆分(“(Name:)”,swars)但结果是一个类似以下内容的列表:

('Name:', 'Chewie  Race:  Wookie', 'Name:', 'Han Solo  Race: Human', 'Name:', 'Jabba the Hutt  Race: Hutt')

当我想要的是:

('Name: Chewie  Race:  Wookie', 'Name: Han Solo  Race: Human', 'Name: Jabba the Hutt  Race: Hutt')

有办法吗?你知道吗


Tags: the字符串答案name列表solohumanrace
2条回答

我们可以使用带有lookahead\s*(?=Name)的regex来分割字符串并保留“Name”:

import re

swars = """Name:  Chewie  Race:  Wookie    Name:  Han Solo  Race: Human
Name:  Jabba the Hutt  Race: Hutt"""

print re.split('\s*(?=Name)', swars) 
# prints: ['Name:  Chewie  Race:  Wookie', 'Name:  Han Solo  Race: Human', 'Name:  Jabba the Hutt  Race: Hutt']
   \s+(?=Name)

拆分依据这个。基本上上面写着用空格和名字分开。你知道吗

相关问题 更多 >