python中某些字符类型的最长连续子字符串

时间:2019-02-04 14:11:26

标签: python string

是否存在一种Python方法来查找某种字符类型的最长连续子串的长度,例如数字/字母/可打印字符的最长连续子串的长度?

例如

rec(removeFront(list), n+1)

最长的数字子串的长度为5,最长的字母子串的长度为6。

2 个答案:

答案 0 :(得分:3)

正则表达式和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'

类似地,您可以更改Regex模式以获得所需的子字符串类型。

答案 1 :(得分:0)

每个子字符串之间是否始终有“ **”。您要做的就是遍历不同的元素,将到目前为止找到的最长的子字符串保留在变量中。

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)