首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >python中某些字符类型的最长连续子串

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

Stack Overflow用户
提问于 2019-02-04 14:11:26
回答 2查看 1.2K关注 0票数 1

有没有一种pythonic方法可以找到某种字符类型的最长连续子串的长度,例如数字/字母/可打印字符的最长连续子串的长度?

例如,在

代码语言:javascript
运行
AI代码解释
复制
s = "43gfd**54452**jhg4**fddsgf**"

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-04 14:17:32

以长度为关键字的Regex和max

代码语言:javascript
运行
AI代码解释
复制
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'

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

票数 3
EN

Stack Overflow用户

发布于 2019-02-04 14:21:23

如果每个子字符串之间总是有"**“。您所要做的就是遍历不同的元素,将迄今为止找到的最长的子字符串保存在一个变量中。

代码语言:javascript
运行
AI代码解释
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54517998

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档