Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2010 21:00:10

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

Murderdoll666
Ed А как?
Можно так:

slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
elif slovo in ta:
print 'perevod:', sa[ta.index(slovo)]
else:
print 'perevoda net'



Отредактировано (Окт. 20, 2010 21:01:16)

Офлайн

#2 Окт. 20, 2010 22:29:31

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

pill
Murderdoll666
Ed А как?
Можно так:

slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
elif slovo in ta:
print 'perevod:', sa[ta.index(slovo)]
else:
print 'perevoda net'
я так пробывала.. ))) не работает)



Офлайн

#3 Окт. 21, 2010 02:19:40

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

Murderdoll666
я так пробывала.. ))) не работает)
Должно работать - скорее всего с кодировкой проблемы…

Насколько я понимаю во входном файлике первым столбцом идет английский а русский вторым.
Если поменять направление перевода (Руский -> Англ), все еще работает?
Если нет - значит проблема с кодировкой (Кодировка слова полученого из консоли не совпадает с кодировкой слова полученного из файла (соответственно elif slovo in ta: возвращает False и перевод не находится)).
решение - перевести все данные в юникод. Соответственно добавить:
line=file.readline().decode ('кодировка')
и
slovo = raw_input('>').decode ('кодировка')
какая там должна стоять кодировка навскидку, к сожалению, не скажу.
Если перевод с русского на Англ работает, тогда не знаю в чем проблема может быть.

ЗЫ: и цикл для чтения, наверное, лучше for использовать:
file=open("dictionary.txt","r")
sa=[]
ta=[]

for line in file:
paar=line.split('\t')#.decode ('кодировка') опять же)
sa.append(paar[0])
ta.append(paar[1])
UPD:
Выспавшимся мозгом посмотрел - не там проблема.
Второй столбец просто читаеться вместе с переводом строки.
Нужно его убрать:

Вот так все работет, специально проверил:

file=open("dictionary.txt","r")
sa=[]
ta=[]
for line in file:
paar=line.split('\t')
sa.append(paar[0].strip ())
ta.append(paar[1].strip ())
slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
elif slovo in ta:
print 'perevod:', sa[ta.index(slovo)]
else:
print 'perevoda net'
>One
perevod: Один
>>>
>Two
perevod: Два
>>>
>Два
perevod: Two
>>>
>Один
perevod: One
>>>

Правда проверял только под Ubuntu, под Окнами все еще может оставаться проблема кодировок…



Отредактировано (Окт. 21, 2010 16:36:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version