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