1

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

26   (passengers:22  crew:4)

或者

32   (passengers:?  crew: ?)

. 我要做的是拆分代码,以便只提取代表乘客和机组人员数量的数字。如果它是一个问号,我会寻找它被替换为“”。

我知道我可以使用 string.replace("?", "") 来替换 ? 但是我该如何分别提取机组人员或乘客的数字字符?这些数字可能从两位数到三位不等,因此我无法将最后几个字符从字符串中或以特定间隔切开。

提前致谢

4

1 回答 1

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()
('?', '?')
于 2013-02-13T15:01:23.150 回答