stil
Янв. 27, 2011 15:43:37
помогите пожалуйста с кодировкой,вот весь код:
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
slovo = True
while slovo:
b = "абвгдеёжзийклмнопрстуфхцчшщЪыьэюя"
spisok = dict(zip(b, map(str, range(1, len(b)+1)) ))
slovo = raw_input("введите пожалуйста слово\n")
if slovo[0] in spisok:
filek = __import__("filek%s" % (spisok[slovo[0]]) )
mydic = filek.slovar
reload(filek)
if slovo in mydic:
print (mydic[slovo])
else:
print ("нет такого слова")
————————————————————-
я ввожу русскую букву: а
выдает ошибку:
Traceback (most recent call last):
…
filek = __import__(“filek%s” % (spisok[slovo]) )
Import Error: No module named filek55 #откуда берется 55 номер файла я не пойму,
#должен быть номер 1.
————————————————
линукс работает в кодировке utf-8
как мне исправить проблему???
stil
Янв. 27, 2011 19:56:48
проблема решилась,оказывается нужно было дописать:
….(“введите пожалуйста слово\n”).decode('utf8')
———————————————-
а как можно разом весь словарь,его (ключ-значение) представить в юникоде?
slovar = {“а”:“прочное”,“б”:“хрупкое”,“в”:“горит”}
alexx11
Янв. 27, 2011 20:19:08
Как-то всё здесь уныло. Словарь: slovar = {“металл”:“прочное”,“стекло”:“хрупкое”,“дерево”:“горит”}. Металл - “прочное” и стекло - “хрупкое”, речь видимо не о самих предметах и о их свойстве, качестве. Но при этом дерево … “горит”. По логике здесь даже лучше будет смотреться “деревянное”, хотя первое ассоциация о дереве что оно “зелёное”.
Или я понимаю конечно дерево зелёное звучит не так аццки как металл прочное. Ну хорошо, раз горит пусть горит, тогда это его состояние в текущий момент, и что же тогда такое металл - прочное а стекло хрупкое? Я уже 4 день внимательно читаю тему, и никак не могу понять что же такое в этом словаре?
stil
Янв. 27, 2011 21:12:19
…Ёпрст, причем здесь содержание словаря? я писал от фонаря,там нет никакой логики,содержание будет конечно другим!
————-
в словаре будет содержаться 4 тыс слов, если вы знается как сделать хороший словарь с быстрым поиском то подскажите,буду рад.
и если не сложно,подскажите как можно разом весь словарь,его (ключ-значение) представить в юникоде?
s = {“ааа”:“что то”,“ббб”:“что то”,“ввв”:“что то”}
Isem
Янв. 27, 2011 21:17:47
dict2 = { a.decode('utf8') : b.decode('utf8') for a, b in dict1.items() }
stil
Янв. 28, 2011 09:44:21
Isemболшое спасибо,но у меня выдает ошибку,указывая на цикл for. а код был такой:
slovar = {"а":"Ёмае","б":"не может быть","в":"как же так"}
dict2 = { a.decode('utf8') : c.decode('utf8') for a, c in slovar.items() } # тут важный момент,а можно ли
# представления в юникод
# сделать до загрузки slovar ?
Ed
Янв. 28, 2011 13:41:00
Попробуйте вот это:
#! /usr/bin/env python3
# -*- coding: utf8 -*-
alphabet = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
while True:
slovo = input("введите слово: ")
if not slovo:
break
if slovo[0] in alphabet:
filek = __import__("filek%s" % alphabet.index(slovo[0]))
print(filek.slovar.get(slovo, "нет такого слова"))
else:
print("ошибка: нерусское слово")
Но вообще ваша организация данных оставляет желать лучшего, мягко говоря.
stil
Янв. 28, 2011 18:46:27
Спасибо большое,этот код интереснее.
>>Но вообще ваша организация данных оставляет желать лучшего, мягко говоря.
я честно сказать не знаю как лучше организовать,в данном примере сейчас происходит загрузка модуля относительно первой буквы,в котором все слова начинаются на одну букву.Вот думаю,может внутри модуля сделать несколько объектов словарей,где каждый будет отличаться уже по второй букве. в общем я не профессионал и не знаю как лучше,может что то посоветуете?
stil
Янв. 28, 2011 20:31:47
примерно вот что я описывал,но код конечно не работает:
alphabet = u"абвгдежзийклмнопрстуфхцчшщъыьэюя"
while True:
slovo = raw_input("введите слово: ").decode('utf8')
if not slovo:
break
if slovo[0] in alphabet:
filek = __import__("filek%s" % int(1+ alphabet.index(slovo[0]) ))
x = filek.slovar%s % int(1+ alphabet.index(slovo[1]) ) #вот в этом месте как то надо перейти на нужный
# объект-словарь,но не знаю как подставить цифры
print(filek.x.get(slovo, "нет такого слова"))
else:
print("ошибка: нерусское слово")
——————————————————————–
в модуле содержится:
slovar1 = {u“ба”:“впопоп”,“}
slovar2 = {u”бб“:”длджлдж"}
Ed
Янв. 28, 2011 23:09:19
Зачем вам эти импорты? Напишите все ваши слова и переводы в обычный текстовый файл по паре слово-перевод на строку. Читайте его в питоновый словарь, а потом с ним работайте. 4000 слов скажем по 100 байт на строку - это 500 килобайт. Все будет просто летать. Если все-таки планируется нечто большее - положите в sqlite, благо он вместе с питоном сейчас из коробки.