Вот пример строки, которая у меня есть,
string = '111 East Sego Lily Drive Lily Drive, Suite 200 Sandy, UT 84070'
Здесь «Лили Драйв» повторяется дважды, и я хочу удалить это дублирование. Но если вы видите, что знак препинания также повторяется дважды, но я не хочу его удалять.
string = nltk.word_tokenize(string)
string = OrderedDict().fromkeys(string)
string = " ".join(string)
Это возвращается,
'111 East Sego Lily Drive, Suite 200 Sandy UT 84070'
Что я ищу,
'111 East Sego Lily Drive, Suite 200 Sandy, UT 84070'






Вместо OrderedDict вы можете сделать небольшой обходной путь, чтобы предотвратить удаление дубликатов , или всего, что вы определяете. Как это:
import nltk.tokenize as nltk
string = '111 East Sego Lily Drive Lily Drive, Suite 200 Sandy, UT 84070'
s = nltk.word_tokenize(string)
uniques = set()
res = []
for word in s:
if word not in uniques or word==',':
uniques.add(word)
res.append(word)
out = ' '.join(res).replace(' ,', ',')
print(out)
111 East Sego Lily Drive, Suite 200 Sandy, UT 84070