кодирование базы данных

302 просмотра
0
0 Комментариев

Cуществует база данных, заполненная текстовыми ответами на некие вопросы:

Пример:

один
лдин
вдвоем
втроем
один
влвоем
и т.д

Необходимо каждому уникальному значению поставить в соответствие уникальный код (любое число), причем значения «один» и «лдин» считаются одинаковыми.
в конечном итоге необходимо вывести данную базу с числовыми значениями

Пример:

один  31
вдвоем 41
втроем 59

Пробовал реализовать на python, используя SequenceMatcher и fuzzy, но безуспешно.


Добавить комментарий

1 Ответы

Python Опубликовано 12.12.2018
0
  1. Первым делом заберите данные из вашей т.н. базы данных, используйте библиотеки для работы с DB (например psycopg2 — для postgresql, csv — если это csv-файл вдруг и т.д.).

  2. Примените к полученным данным вашу функции-фильтр, которая будет считать, что «один» это «лдин» и почистит ненужные значения. Например она может выглядеть следующим образом и включать в себя справочник поправок. Вы можете его создать всё в той же базе или конфигурационном файле.

    def f_replace(x):
        my_dict = {"лдин": "один", "тры": "три"}
        # return [my_dict[a] if a in my_dict else a for a in x]
        t = []
        for m in x:
            if m in my_dict:
                t.append(my_dict[m])
            else:
                t.append(m)
        return t
    

  3. Полученные данные добавьте в set(), тем самым исключив дублирующиеся элементы.

    t = ["один", "один", "три", "три"]
    set(t)
    set(['один', 'три'])
    

  4. Добавьте числовые идентификаторы:

    t2 = {'один', 'три'}
    t3 = [[x, y] for x, y in zip(t2, range(1, len(t2) + 1))]
    for i, j in t3:
        print i, j
    три 1
    один 2
    

*Используйте utf-8, если русские символы.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up