Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python re.split-保留匹配的字符串?_Python_Regex - Fatal编程技术网

Python 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

如果这是非常简单的或重复的,请让我知道。我在这里已经找不到答案了

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

有没有办法让re.split只保留匹配的字符串

例如:

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)