Python實現(xiàn)統(tǒng)計給定字符串中重復(fù)模式最高子串功能示例
本文實例講述了Python實現(xiàn)統(tǒng)計給定字符串中重復(fù)模式最高子串功能。分享給大家供大家參考,具體如下:
給定一個字符串,如何得到其中重復(fù)模式最高的子字符串,我采用的方法是使用滑窗機制,對給定的字符串切分,窗口的大小從1增加到字符串長度減1,將所有的得到的切片統(tǒng)計結(jié)果,在這里不考慮單個字符的重復(fù)模式,好了,很簡單看具體實現(xiàn):
#!usr/binenv python
#encoding:utf-8
'''''
__Author__:沂水寒城
統(tǒng)計一個給定字符串中重復(fù)模式數(shù)量得到最高重復(fù)模式串
'''
def slice(num_str,w):
'''''
對輸入的字符串滑窗切片返回結(jié)果列表
'''
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):
'''''
統(tǒng)計重復(fù)模式串?dāng)?shù)量
'''
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
結(jié)果如下:
[('45', 8), ('4545', 5), ('454', 5), ('545', 5), ('54', 5), ('5454', 4), ('454545', 4), ('45454', 4), ('54545', 4), ('545454', 3)]
[Finished in 0.5s]
結(jié)果列表中第一個即為所求,當(dāng)然,基于此還可以繼續(xù)改進有很多別的需求。
PS:這里再為大家推薦2款非常方便的統(tǒng)計工具供大家參考使用:
在線字?jǐn)?shù)統(tǒng)計工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Pandas DataFrame操作數(shù)據(jù)增刪查改
我們在用 pandas 處理數(shù)據(jù)的時候,經(jīng)常會遇到用其中一列數(shù)據(jù)替換另一列數(shù)據(jù)的場景。這一類的需求估計很多人都遇到,當(dāng)然還有其它更復(fù)雜的。解決這類需求的辦法有很多,這里我們來推薦幾個,這篇文章主要介紹了Pandas DataFrame操作數(shù)據(jù)的增刪查改2022-10-10
Python numpy二維數(shù)組如何刪除指定行和列
本文展示了如何對數(shù)組進行行列刪除操作,包括刪除單行、單列、多行和多列的方法,通過具體的運行結(jié)果展示,讀者可以清晰地了解到如何在不同情況下進行數(shù)據(jù)處理,文章內(nèi)容實用,適合需要進行數(shù)據(jù)處理的讀者參考學(xué)習(xí)2024-09-09
Python THREADING模塊中的JOIN()方法深入理解
這篇文章主要介紹了Python THREADING模塊中的JOIN()方法深入理解,本文用簡潔易懂的語言總結(jié)了對JOIN()方法的理解,不同于其它文章,需要的朋友可以參考下2015-02-02
Python統(tǒng)計字符內(nèi)容的占比的實現(xiàn)
本文介紹了如何使用Python統(tǒng)計字符占比,包括字符串中字母、數(shù)字、空格等字符的占比,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

