簡體   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