繁体   English   中英

如何从字符串中找到所有四位数字?

[英]How can I find all four digit numbers from string?

我有一串很长的数字:

str = '0922035963126927190699198371937793731321758941428713'

首先,我想找到所有包含四位数字的数字:

n = 4
chunks = [str[i:i+n] for i in range(0, len(str), n)]

结果,我有像“0922”或“0359”这样的数字。 但是我怎样才能让这段代码在 1000-9999 范围内的字符串中找到所有这四位数字呢? (开始时没有“0”)

给你:

string = '0922035963126927190699198371937793731321758941428713'

size = 4
nums = [string[i:i + size] for i in range(len(string) - size + 1) if string[i] != '0']

只需在 for 末尾添加条件,即str[i]必须不同于0

chunks = [str[i:i+n] for i in range(0, len(str), n) if str[i] != '0']

如果预期的 output 是:

['9220', '3596', '3126', '9271', '9069', '9198', '3719', '3779', '3731', '3217', '5894', '1428']

然后一个非常简单的正则表达式会找到你的结果:

>>> import re
>>> pattern = re.compile(r"[1-9]\d{3}")
>>> numbers = '0922035963126927190699198371937793731321758941428713'
>>> pattern.findall(numbers)
['9220', '3596', '3126', '9271', '9069', '9198', '3719', '3779', '3731', '3217', '5894', '1428']
>>>

正如其他答案所暗示的那样,有很多方法可以做到这一点:我使用下面的 function 使其递归:

input_string = '0922035963126927190699198371937793731321758941428713'

n = 4

def make_chunks(input_string):
    if len(input_string) < 4:
        if input_string[0] == '0':
            return make_chunks(input_string[1:])
        else:
            return print(input_string)
    else:
        if input_string[0] == '0':
            return make_chunks(input_string[1:])
        else:
            print(input_string[0:n])
            make_chunks(input_string[n:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM