Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 13.11.2020
Сообщений: 2

Сделать из англо-русского словаря русско-английский

29.11.2020, 15:38. Показов 6186. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть задание:

В файле находятся строки англо-русского словаря в таком формате:

cat - кошка
dog - собака
home - домашняя папка, дом
mouse - мышь, манипулятор мышь
to do - делать, изготавливать
to make - изготавливать
Здесь английское слово (выражение) и список русских слов (выражений) разделены двумя табуляциями и минусом: '\t-\t'.

Требуется создать русско-английский словарь и вывести его в файл ru-en.txt в таком формате:

делать - to do
дом - home
домашняя папка - home
изготавливать - to do, to make
кошка - cat
манипулятор мышь - mouse
мышь - mouse
собака - dog
Порядок строк в выходном файле должен быть словарным с человеческой точки зрения (так называемый лексикографический порядок слов). То есть выходные строки нужно отсортировать.


Написала вот такой код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def extract_en_ru_dict(en_ru_path):
    words = dict()
    text = open(en_ru_path, 'r', encoding="utf-8")
    line = text.readline().strip().split('\t-\t')
    while line:
        words[line[0]] = line[1].split(',')
        line = text.readline().strip().split('\t-\t')
        if line == [""]:
            break
    text.close()
    return words
 
 
def make_ru_en_dict(words):
    ru_en_dict = {}
    while len(words) > 0:
        pair = words.popitem()
        for i in pair[1]:
            if i not in ru_en_dict:
                ru_en_dict[i] = pair[0]
            else:
                ru_en_dict[i] += pair[0] + ', '
    return ru_en_dict
 
 
def write_dict_in_file(ru_en_path, ru_en_dict):
    ru_en_list = []
    for key in ru_en_dict.keys():
        ru_en_list.append([key, ru_en_dict[key]])
    ru_en_list.sort(key=lambda i: i[0])
    ru_en = open(ru_en_path, 'w')
    for i in range(len(ru_en_list)):
        for y in ru_en_list[i][0]:
            ru_en.write(y)
        ru_en.write(' : ')
        for y in ru_en_list[i][1]:
            ru_en.write(y)
        ru_en.write('\n')
    return
 
 
en_ru_path = input("Enter en-ru dictionary location: ")
ru_en_path = input("Enter new ru-en dictionary location: ")
 
en_ru_dict = extract_en_ru_dict(en_ru_path)
ru_en_dict = make_ru_en_dict(en_ru_dict)
write_dict_in_file(ru_en_path, ru_en_dict)

Вроде бы все работает. Скажите, это вообще норм?) Как можно лучше? Я совсем новичок, может чего-то не знаю, как по-другому написать)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2020, 15:38
Ответы с готовыми решениями:

Напишите программу, которая имитирует работу англо-русского и русско-английского словаря. python
Напишите программу, которая имитирует работу англо-русского и русско-английского словаря. Программа может принимать на вход как ...

Англо-русский и русско-английский словарь
Напишите программу, которая имитирует работу англо-русского и русско-английского словаря. Программа может принимать на вход как ...

Создайте на основе англо-латинского словаря латино-английский словарь
создать, на основе англо-латинского словаря, латино-английский словарь. то есть на основе примера ниже создать словарь на языке...

2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.11.2020, 16:15
Цитата Сообщение от Alena_Mart88 Посмотреть сообщение
Скажите, это вообще норм?
Зачем читать строки из файла через while? Для этого есть for.
Python
1
2
for line in open(filepath):
    print(line)
while вообще редко нужен.
2
0 / 0 / 0
Регистрация: 13.11.2020
Сообщений: 2
27.12.2020, 15:10  [ТС]
Ну как зачем, потому что так работает, а поправить некому) Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2020, 15:10
Помогаю со студенческими работами здесь

Создать на основе англо-латинского словаря латино-английский словарь
Создать на основе англо-латинского словаря латино-английский словарь. ТО есть на основе примера ниже создать словарь на python) ...

В файле input.txt хранится англо-русский словарь. Создать русско-английский словарь и сохранить его в отсортированном ви
пример input.txt apple – лесть, яблоко soap – лесть, мыло foam – мыло, пена output.txt лесть – apple, soap мыло – foam,...

Даны 2 словаря – русско-английский и англо-испанский. Напечатать перевод введённого русского слова на испанский
Даны 2 словаря – русско-английский и англо-испанский. Напечатать перевод введённого русского слова на испанский.

Создание обратного словаря (из англо-латыньского латыно-английский)
помогите,умоляю , на питоне пытался разобраться но никак не получается Однажды, разбирая старые книги на чердаке, школьник Вася нашёл...

Создать на основе англо-латинского словаря латино-английский словарь
Создать на основе англо-латинского словаря латино-английский словарь. ТО есть на основе примера ниже создать словарь на python) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru