3

スペースを桁区切り記号として使用するテキストを扱っています。たとえば、400 または 40 000 または 40 000 000 または 4 000 000 000 です。文字列内の数字を識別する必要があります。識別されたら、番号を再フォーマットするための多くのオプションがあります。私は正規表現の新人です。これは機能しません:

import re
line = '40) He had 120 hours to increase from 40 000 units to 20 000 000.'
regex = re.compile("(\d+ *\d+)")
re.findall(regex, line)
['40', '120', '40 000', '20 000', '000']
4

1 に答える 1

8

次のようにします。

regex = re.compile(r"(\d+(?:\s+\d+)*)")

(?:)これは、 1 つ以上のスペース ( \s+) の後に少なくとも 1 つの数字 ( ) が続く非キャプチャ グループを使用し\d+ます。非キャプチャ グループ全体が 0 回以上表示される場合があります ( *)。

Python の正規表現には生の文字列 (r""または)を使用することをお勧めします。r''

最後に、おそらく次のように正規表現を締めます。

regex = re.compile(r"(\d+(?:\s+\d{3})*)")

これには、最初の数字を除くすべての数字のグループが正確に 3 桁の長さである必要があります。

于 2012-05-28T14:17:57.327 に答える