1

以下のような文字列があります。

26   (passengers:22  crew:4)

また

32   (passengers:?  crew: ?)

. 私が探しているのは、コードを分割して、乗客と乗組員の数を表す数字だけが抽出されるようにすることです。疑問符の場合は、"" に置き換えてください。

string.replace("?", "") を使用して ? を置き換えることができることは承知しています。ただし、乗組員または乗客の数字をそれぞれ抽出するにはどうすればよいですか? 数字は 2 桁から 3 桁までさまざまなので、最後の数文字を文字列から切り離したり、特定の間隔で切り取ったりすることはできません。

前もって感謝します

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 に答える