Python re.split-保留匹配的字符串?
如果这是非常简单的或重复的,请让我知道。我在这里已经找不到答案了 Python的re.split将破解一个字符串,并返回一个按其发送的参数拆分的字符串列表。如果搜索字符串在括号中,它将保留匹配的字符串,但它将把匹配的字符串放在一个单独的列表元素中。 有没有办法让re.split只保留匹配的字符串 例如:Python re.split-保留匹配的字符串?,python,regex,Python,Regex,如果这是非常简单的或重复的,请让我知道。我在这里已经找不到答案了 Python的re.split将破解一个字符串,并返回一个按其发送的参数拆分的字符串列表。如果搜索字符串在括号中,它将保留匹配的字符串,但它将把匹配的字符串放在一个单独的列表元素中。 有没有办法让re.split只保留匹配的字符串 例如: swars = """Name: Chewie Race: Wookie Name: Han Solo Race: Human Name: Jabba the Hutt Ra
swars = """Name: Chewie Race: Wookie Name: Han Solo Race: Human
Name: Jabba the Hutt Race: Hutt"""
如果我想将这个字符串拆分为名称条目,我会使用re.split(((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')
有什么方法可以做到这一点吗?我们可以使用带有lookahead
\s*(?=Name)
的正则表达式来拆分字符串并保留“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)