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