与this question类似,我有一个由冒号分隔的名称和数字字符串:
s = 'Waz D: 5 l gu l: 5 GrinVe: 3 P LUK: 2 Cubbi: 1 2 nd dok: 1 maf 74: 1 abr12: 1 Waza D 5'
我试着把它分开来得到:
('Waz D', '5'),
('l gu l', '5'),
('GrinVe', '3'),
('P LUK', '2'),
('Cubbi', '1'),
('2 nd dok', '1')
('maf 74', '1')
('abr12', '1')
到目前为止,我已经尝试了两种正则表达式,但效果参差不齐:
re.findall(r"(.*?)[a-zA-Z0-9]+: (\d+)*", s)
[('Waz ', '5'),
(' l gu ', '5'),
(' ', '3'),
(' P ', '2'),
(' ', '1'),
(' 2 nd ', '1'),
(' maf ', '1'),
(' ', '1')]
以及:
re.findall(r"(.*?)([a-zA-Z0-9]+): (\d+)*", s)
[('Waz ', 'D', '5'),
(' l gu ', 'l', '5'),
(' ', 'GrinVe', '3'),
(' P ', 'LUK', '2'),
(' ', 'Cubbi', '1'),
(' 2 nd ', 'dok', '1'),
(' maf ', '74', '1'),
(' ', 'abr12', '1')]
我如何调整它以得到我想要的输出?你知道吗
它归结为在组合
: \d
上拆分,没有别的(除了在这里和那里抑制前导和后导空格)。它所需要的只是一个不包含冒号:
的任意长度的组,后跟该冒号,然后是一行数字。你知道吗结果:
贪婪地使用空格,不要把它放入匹配的组中。你知道吗
如果我们假设字符串后面总是跟一个分号空格数字空格序列,您可以这样做:
相关问题 更多 >
编程相关推荐