您好,登錄后才能下訂單哦!
本文實例講述了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程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。