当前位置: 首页 > 编程笔记 >

Python实现统计给定字符串中重复模式最高子串功能示例

鞠征
2023-03-14
本文向大家介绍Python实现统计给定字符串中重复模式最高子串功能示例,包括了Python实现统计给定字符串中重复模式最高子串功能示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Python实现统计给定字符串中重复模式最高子串功能。分享给大家供大家参考,具体如下:

给定一个字符串,如何得到其中重复模式最高的子字符串,我采用的方法是使用滑窗机制,对给定的字符串切分,窗口的大小从1增加到字符串长度减1,将所有的得到的切片统计结果,在这里不考虑单个字符的重复模式,好了,很简单看具体实现:

#!usr/binenv python
#encoding:utf-8
'''''
__Author__:沂水寒城
统计一个给定字符串中重复模式数量得到最高重复模式串
'''
def slice(num_str,w):
 '''''
 对输入的字符串滑窗切片返回结果列表
 '''
 result_list=[]
 for i in range(len(num_str)-w+1):
 result_list.append(num_str[i:i+w])
 return result_list
def get_repeat_num_seq(num_str):
 '''''
 统计重复模式串数量
 '''
 result_dict={}
 result_list=[]
 for i in range(2,len(num_str)):
 one_list=slice(num_str, i)
 result_list+=one_list
 for i in range(len(result_list)):
 if result_list[i] in result_dict:
  result_dict[result_list[i]]+=1
 else:
  result_dict[result_list[i]]=1
 sorted_result_dict=sorted(result_dict.items(), key=lambda e:e[1], reverse=True)
 return sorted_result_dict[0:10]
if __name__ == '__main__':
 num_list=get_repeat_num_seq('4513785645121214545454545457894')
 print num_list

结果如下:

[('45', 8), ('4545', 5), ('454', 5), ('545', 5), ('54', 5), ('5454', 4), ('454545', 4), ('45454', 4), ('54545', 4), ('545454', 3)]
[Finished in 0.5s]

结果列表中第一个即为所求,当然,基于此还可以继续改进有很多别的需求。

PS:这里再为大家推荐2款非常方便的统计工具供大家参考使用:

在线字数统计工具:
http://tools.jb51.net/code/zishutongji

在线字符统计与编辑工具:
http://tools.jb51.net/code/char_tongji

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

 类似资料:
  • 本文向大家介绍Python实现针对给定字符串寻找最长非重复子串的方法,包括了Python实现针对给定字符串寻找最长非重复子串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现针对给定字符串寻找最长非重复子串的方法。分享给大家供大家参考,具体如下: 问题: 给定一个字符串,寻找其中最长的重复子序列,如果字符串是单个字符组成的话如“aaaaaaaaaaaaa”那么满足要求的

  • 问题内容: 如何计算给定子字符串在Python字符串中出现的次数? 例如: 问题答案: , 像:

  • 问题内容: 计算给定字符串的出现次数(包括Python中的重叠)的最佳方法是什么?这是一种方法: 该方法返回5。 Python中有更好的方法吗? 问题答案: 好吧,这可能会更快,因为它可以在C中进行比较:

  • 问题内容: 下面的代码试图删除字符串中所有重复的字符。我不确定代码是否正确。有人可以帮助我处理代码吗(即,字符匹配时实际发生了什么)? 问题答案: 该功能对我来说很好。我已经写了内联评论。希望能帮助到你:

  • 问题内容: 我们给了一个字符串,例如,取“ TUOPPPPJHHTT”。我们希望找出哪个字符在字符串中连续出现次数最多以及发生多少次。在这种情况下,其P发生4次。 我尝试如下运行for循环 但是用这种方法,问题是它将计算所有字母的重复出现。 问题答案: 每次找到与上一个字符不同的字符,则表示运行(连续重复的字母)结束,因此您应记下当前运行的长度(即的值),然后重置计数。最后,您可以打印最大值。

  • 本文向大家介绍Python简单实现查找一个字符串中最长不重复子串的方法,包括了Python简单实现查找一个字符串中最长不重复子串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法。分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: 结果如下: 120135435最长非重复子串为:201354