2014-03-12 67 views
0

LZW算法用於查找輸入符號之間的模式。但是它能在詞語中尋找模式嗎?我的意思是alfabet指數不被例如符號,但字輸入:模式查找LZW python

'abcd', 'abcd', 'fasf' , 'asda', 'abcd' , 'fasf' ... 

有像輸出:

'abcd', '1', 'fasf' , 'asda' , '1', '2' ... 

或者是有沒有做的伎倆任何壓縮算法?

回答

1
keys = [] 
def lzw(text): 
     tokens = text.split() 
     new_keys = dict.fromkeys(tokens).keys() 
     keys.extend([key for key in new_keys if key not in keys]) 
     encoded = ["%s"%keys.index(tok) for tok in tokens] 
     for i,key in enumerate(keys): 
      try: 
       encoded[encoded.index(str(i))] = key 
      except: 
       pass 
     return " ".join(encoded) 

print lzw("abcd abcd fasf asda abcd fasf") 
#outputs: abcd 0 fasf asda 0 2 

是一個非常簡單的實現

+0

這其實沒有做你想要什麼,我想我誤解你有對不起:(問題... –

+0

我想用這個對於很多deifferent但是我想保留相同的索引鍵,所以對於每個列表我輸入文本並輸出壓縮文本和keys()將其傳遞到下一個壓縮列表右邊? – bill

+0

那裏現在它應該保留你的密鑰 –

0

您可以使用此代碼將通過字符串搜索來查找模式。您需要知道您想要搜索的模式。

## Search for pattern 'iii' in string 'piiig'. 
## All of the pattern must match, but it may appear anywhere. 
## On success, match.group() is matched text. 
match = re.search(r'iii', 'piiig') => found, match.group() == "iii" 
match = re.search(r'igs', 'piiig') => not found, match == None 

有這個網站的讀: https://developers.google.com/edu/python/regular-expressions?hl=iw