【问题标题】:splitting string in Python (2.7)在 Python (2.7) 中拆分字符串
【发布时间】:2013-02-13 14:58:32
【问题描述】:

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

26   (passengers:22  crew:4)

32   (passengers:?  crew: ?)

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

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

提前致谢

【问题讨论】:

  • 数字可能从两位数到三位不等与您的示例相矛盾;我在那里看到一个 一个 数字号码 (4)。我的回答假设 1 位数也可以。
  • @MartijnPieters 感谢 Martijn。给出的示例只是数百个字符串中的两个。例如,可能有一个“crew:135”条目。
  • 是的,那是 3 位数。 4一个 数字,但您接着说数字从两到三位不等,这意味着 4 不是有效数字。
  • 啊,抱歉……是的,这些数字确实会从 1 到可能的数百个数字不等。道歉并感谢您的解决方案

标签: python regex string python-2.7


【解决方案1】:

匹配这些的正则表达式是:

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

【讨论】:

  • 感谢您的帮助。赞赏。
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 2010-09-19
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多