【发布时间】:2018-12-11 17:00:10
【问题描述】:
我有一个字符串:
s = 'Abc - 33 SR 11 Kill(s) P G - (Type-1P-G) 2 Kill(s) M 1 Kill(s) S - M9A CWS 1 Kill(s) 11 Kill(s)'
我正在尝试将其拆分以捕获杀死的数量,以及每个 "XY Kill(s)" 之前的信息以获得此输出:
['Abc - 33 SR',
'P G - (Type-1P-G)',
'M',
'S - M9A CWS']
获取击杀数很简单:
re.findall(r"(\d+) Kill", s)
['11', '2', '1', '1', '11']
获取文本更加困难。通过研究,我尝试使用以下正则表达式,它只是一系列捕获组的开始:
re.findall(r"(?=[0-9]+ Kill)", s)
['', '', '', '', '', '', '']
然后我将其更改为在“每个组之前添加任意数量的字符”。
re.findall(r"(.+)(?=[0-9]+ Kill)", s)
['Abc - 33 SR 11 Kill(s) P G - (Type-1P-G) 2 Kill(s) M 1 Kill(s) S - M9A CWS 1 Kill(s) 1']
这只是给出整个字符串。如何调整它以捕获“任意数量的数字-空格-Kill”之前的所有内容?
让我们把受骗者排除在外。我咨询了以下内容。第二个看起来特别有用,但我无法使它适合这个目的。
Extract Number before a Character in a String Using Python,
How would I get everything before a : in a string Python,
how to get the last part of a string before a certain character?。
【问题讨论】: