我有一个字符串,如下所示:
26 (passengers:22 crew:4)
或
32 (passengers:? crew: ?)
.我想要做的是拆分代码,以便只提取代表乘客和机组人员数量的数字。如果它是一个问号,我会寻找将其替换为“”。
我知道我可以使用 string.replace("?", "") 来替换 ?但是,我该如何分别提取机组人员或乘客的数字字符呢?这些数字可能从两位数到三位不等,因此我无法从字符串中或以特定间隔切掉最后几个字符。
提前致谢
最佳答案
匹配这些的正则表达式是:
r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)'
加入了一些额外的空白容忍度。
结果:
>>> import re
>>> numbers = re.compile(r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)')
>>> numbers.search('26 (passengers:22 crew:4)').groups()
('22', '4')
>>> numbers.search('32 (passengers:? crew: ?)').groups()
('?', '?')
关于python - 在 Python (2.7) 中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856385/