2015-02-20 2 views
1

Я нашел много почти ответов на мою проблему, но ничего не работает. Этот вопрос делает то, что я хочу сделать, пока это предложение с пробелами в нем. n-grams in python, four, five, six grams?Преобразование строки в подстроки ngrams - Python

Пример:

string = "Thequickbrownfox." 

Я хотел бы разделить это на [ 'The', 'HEQ', 'фас', и т.д. ...]. Мое приложение такое же, как и это, поэтому любые дополнительные советы по использованию этого запроса sql приветствуются. http://literatejava.com/sql/fuzzy-string-search-sql/

ответ

1

Вы можете использовать chunks (слегка измененный) рецепт:

def chunks(l, n, step): 
    """ Yield successive n-sized chunks from l with a given step 
    """ 
    for i in range(0, len(l)-n+1, step): 
     yield l[i:i+n] 


string = 'Thequickbrownfox.' 

for c in chunks(string, 3, 1): 
    print(c)  

Дает:

The 
heq 
equ 
qui 
uic 
ick 
ckb 
kbr 
bro 
row 
own 
wnf 
nfo 
fox 
ox. 
+0

Я исправил это для вас Марцин. –

+0

@MalikBrahimi Thx. – Marcin

+0

Да, просто небольшой вопрос. Посмотрите, что вы поймали свое стоп-значение. –

3

Используйте список понимание:

trigrams = [string[i:i+3] for i in range(0, len(string) - 2)] 

В более общем методе:

ngrams = lambda n: [string[i:i+n] for i in range(0, len(string) - n + 1)] 
trigrams = ngrams(3) 
Смежные вопросы