如何使用Python在字符串中使用空格分隔符识别数字?

时间:2012-05-28 14:16:05

标签: python regex

我正在处理使用空格作为千​​位分隔符的文本,例如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']

1 个答案:

答案 0 :(得分:8)

以下将会这样做:

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

这使用与一个或多个空格((?:))匹配的非捕获组\s+,后跟至少一个数字(\d+)。整个非捕获组可以出现零次或多次(*)。

值得指出的是,对于Python正则表达式使用原始字符串(r""r'')通常是个好主意。

最后,我可能会像这样收紧正则表达式:

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

这要求除第一组以外的每组数字都是正好三位数。