簡體   English   中英

python中某個字符類型的最長連續子字符串

[英]Longest consecutive substring of certain character type in python

是否有pythonic方法來查找某個字符類型的最長連續子字符串的長度,例如數字/字母/可打印字符的最長連續子字符串的長度?

例如在

s = "43gfd**54452**jhg4**fddsgf**"

最長的數字子串的長度為5,最長的字母子串的長度為6。

正則表達式和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'

同樣,您可以更改正則表達式模式以獲取所需的子字符串類型。

如果每個子串之間總是有“**”。 您所要做的就是遍歷不同的元素,在變量中保留到目前為止找到的最長的子字符串。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM