在Python中拆分字符串(2.7)

时间:2013-02-13 14:58:32

标签: python regex string python-2.7

我有一个如下所示的字符串:

26   (passengers:22  crew:4)

32   (passengers:?  crew: ?)

。我要做的是拆分代码,以便只提取代表乘客和机组人数的数字。如果是问号,我会将其替换为“”。

我知道我可以用string.replace(“?”,“”)替换?但是我该如何分别为船员或乘客提取数字字符呢?数字可能会从两位数变为三位,因此我无法将字符串中的最后几个字符或特定间隔切片。

提前致谢

1 个答案:

答案 0 :(得分:5)

与之匹配的正则表达式为:

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()
('?', '?')