[英]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.