用逗号分隔两位数(不包括浮点数)

时间:2019-03-06 18:34:41

标签: python regex

对于每个字符串输入,我只需要匹配一个(或多个)两位数字(需要用空格或逗号+空格(不是逗号+数字)分隔)。

在以下情况下,您将看到一些示例的结果。我不希望我的正则表达式抓住前两个例子。

def cleanse_no(string):
    regex = r"(?:^|\s)(\d{2})\b"
    string = str(string).strip(" .,€")
    list_digits = re.findall(regex, string)
    digits = ", ".join(list_digits)
    return digits

test_digits = ["€ 22.22", ". 23,600.90", "25 45 61", "22, 232, 36, 02,", "1, 23, 456"]
for test_dgt in test_digits:
    print(test_dgt,"-------find_no--------->",cleanse_no(test_dgt))

我得到这些结果:

€ 22.22 -------find_no---------> 22
. 23,600.90 -------find_no---------> 23
25 45 61 -------find_no---------> 25, 45, 61
22, 232, 36, 02, -------find_no---------> 22, 36, 02
1, 23, 456 -------find_no---------> 23

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用

def cleanse_no(s):
    regex = r"(?<!\S)\d{2}(?=,?(?:\s|$))"
    return ", ".join(re.findall(regex, s))

请参见Python demoregex demo

模式详细信息

  • (?<!\S)-空格左边界
  • \d{2}-两位数字
  • (?=,?(?:\s|$))-当前位置的右边,必须有一个可选的逗号,后跟空格或字符串结尾。