【问题标题】:How can I identify numbers with space separator for thousands in a string with Python?如何使用 Python 识别字符串中带有千位空格分隔符的数字?
【发布时间】:2012-05-28 22:23:06
【问题描述】:

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

【问题讨论】:

    标签: python regex


    【解决方案1】:

    下面会做:

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

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

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

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

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

    这要求除了第一个数字之外的每一组数字都恰好是三位数。

    【讨论】:

    • 谢谢 aix。为了进一步收紧,我对其进行了更新,以将第一组限制为 1-3 位: re.compile("(\d{1,3}(?:\s*\d{3})*) ")
    猜你喜欢
    • 2013-05-16
    • 2018-11-13
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2018-06-22
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多