有没有一种pythonic方法可以找到某种字符类型的最长连续子串的长度,例如数字/字母/可打印字符的最长连续子串的长度?
例如,在
s = "43gfd**54452**jhg4**fddsgf**"
最长的数字子串的长度为5,最长的字母子串的长度为6。
发布于 2019-02-04 14:17:32
以长度为关键字的Regex和max
:
In [12]: s = "43gfd54452jhg4fddsgf"
In [13]: max(re.findall(r'\d+', s), key=len) # digits
Out[13]: '54452'
In [14]: max(re.findall(r'\D+', s), key=len) # non-digits
Out[14]: 'fddsgf'
类似地,您可以更改正则表达式模式以获得所需的子字符串类型。
发布于 2019-02-04 14:21:23
如果每个子字符串之间总是有"**“。您所要做的就是遍历不同的元素,将迄今为止找到的最长的子字符串保存在一个变量中。
longest_letter = 0
longest_digit = 0
for el in s.split("**"):
if(el.isalpha()):
len_letter = len(el)
if(len_letter > longest_letter):
longest_letter = len_letter
if(el.isdigit()):
len_digit = len(el)
if(len_digit > longest_digit):
longest_digit = len_digit
print (longest_letter)
print (longest_digit)
https://stackoverflow.com/questions/54517998
复制相似问题