如果这简单或重复,请告诉我。我已经无法在这里找到答案。
Python的re.split会破解一个字符串,并返回由其发送的参数拆分的字符串列表。如果搜索字符串在括号中,它将保留匹配的字符串,但它会将匹配的字符串放在单独的列表元素中。
有没有办法让re.split简单地保留匹配的字符串?
例如:
swars = """Name: Chewie Race: Wookie Name: Han Solo Race: Human
Name: Jabba the Hutt Race: Hutt"""
如果我想打破这个字符串来命名条目,我会使用re.split("(Name :))#34;,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')
有办法做到这一点吗?
答案 0 :(得分:4)
我们可以使用前瞻\s*(?=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']
答案 1 :(得分:0)
\s+(?=Name)
按此分割。实际上它表示用空格分隔后跟名称。