python获取指定字符串中重复模式最高的字符串方法

yipeiwu_com7年前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]

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

以上这篇python获取指定字符串中重复模式最高的字符串方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python切片操作深入详解

本文实例讲述了Python切片操作。分享给大家供大家参考,具体如下: 我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索引号可以是正数由0开始从左向右,也可以是负数...

python 统计数组中元素出现次数并进行排序的实例

如下所示: lis = [12,34,456,12,34,66,223,12,5,66,12,23,66,12,66,5,456,12,66,34,5,34] def test1(...

python实现k均值算法示例(k均值聚类算法)

简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示。 复制代码 代码如下:import pylab as pl #calc Euclid squiredef calc_e_...

Python2和Python3.6环境解决共存问题

Linux下安装Python3.6和第三方库 /post/150478.htm 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依...

在Python中如何传递任意数量的实参的示例代码

1 用法 在定义函数时,加上这样一个形参 "*形参名",就可以传递任意数量的实参啦: def make_tags(* tags): '''为书本打标签''' print('标...