Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2013 19:53:30

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Создать словарь на лету из файла

Есть толковый словарь русского языка в текстовом файле
пытаюсь создать словарь при чтении из файла, где ключом служит слово , а значением его толкование

# -*- coding: utf-8 -*-
from collections import defaultdict
with open('modernen.txt') as fi: 
    text = fi.read()
D = defaultdict(list)
sp = text.split()
for i in sp:    
    if i.isupper():
        key = i
    D[key].append(i)
                   
#print (D)
словарь создается но много ошибок и немного не не то чего хотелось бы

текст в файле:
   АБАЖУР м. франц. косой навесец на свет, на свечу, лампу  для  затина
навесец, тенник, затин, щиток, колпак,  козырек     косые  проемы  для
окон, сверху вниз, окно откосом.
   АБАЗ, АБАС м. кавк. персидская серебряная монета, около  20  коп.   
Восковой  шарик  от   церковной   свечи,   привешиваемый   закавказскими
христианами, в знак  обета,  к  шее  или  пясти.  Абаза  ж.  черноморск.
жестокий восточный ветер, от кавказского берега, опасный  для  дунайских
рыбаков.   Бран. бестолковый басурманин. Эх вы, абаза немая!   Конское
тавро, известное на Кавказе, вероятно, от названия горского племени.
хотелось бы конечно выкинуть немного лишнего текста, создать краткий словарь, но главное создать этот словарь типа
{"ДАВЫДОВСКИЙ": 'ДАВЫДОВСКИЙ Ипполит Васильевич 1887  1968 российский патолог основатель научной школы Труды по патологической анатомии инфекционных болезней атеросклероза старения по общей патологии' 
        "БАБУР": 'БАБУР Захиреддин Мухаммед 1483  1530 основатель государства Великих Моголов потомок Тимура Первоначально правитель удела в Средней Азии затем в Кабуле' }

Отредактировано sanodin (Ноя. 30, 2013 17:43:46)

Офлайн

#2 Ноя. 29, 2013 21:03:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Создать словарь на лету из файла

sanodin
пытаюсь создать словарь при чтении из файла, где ключом служит слово
для начала упрости словарь
для таких словарей нужно составлять грамматику, а потом по ней записывать реализацию

sanodin
sp = text.split()
for i in sp:    
    if i.isupper():
        key = i
    D[key].append(i)
это всё наивное школоло - такое простое не прокатит

сначала надо определить алфавит, символы которого являются лексемами
потом составить грамматику, которая задаёт язык этого словаря (порождает множество допустимых цепочек символов над алфавитом)
потом для грамматики составлять конечный автомат

есть там модуль какой-то, который автоматически уже всё делает



Отредактировано py.user.next (Ноя. 29, 2013 21:04:11)

Офлайн

#3 Ноя. 30, 2013 20:14:01

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Создать словарь на лету из файла

Делаю по простому

# -*- coding: utf-8 -*-
from collections import defaultdict
import sys
with open('modernen.txt') as fi: 
    text = fi.readlines()
D = defaultdict(list)
DT = defaultdict(list)
for i in text:
        i = i.split()
        #print (i)
        try:
            if i[0].isupper():
                key = i[0]
                #print (key)
            for y in i:
                
                D[key].append(y)
        except: pass
for key in D:
    #print(key, D[key])
    val = D[key]
    val = ' '.join(val)
    DT[key].append(val)
sys.stdout = open("out4.txt", "w")
print (DT)
все равно есть огрехи, правлю ручками если что не так

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version