我有一个像下面这样的字符串:

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/

10-12 22:26