python - 在 Python (2.7) 中拆分字符串

标签 python regex string python-2.7

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

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/

相关文章:

python - 使用嵌套生成器 pickle 对象

python - 在 Django View 中显示一对多关系

c - C 中的字符串标记

python - 如何将类似字符串的字节转换为普通字节?

python - 使用 Python 的 confluence-kafka 将组的偏移量设置为最新(一次性管理操作)

python - Pybrains 迷宫教程出错

ruby - 为什么 Ruby gsub 不替换第二次出现的该模式?

regex - 多行 “[redex]::match()”输出在Powershell中显示为一行

java - 扫描仪使用分隔符问题

c++ - 将 boost::array<char> 复制到 std::string