Форум сайта python.su
Здравствуйте! Потихоньку изучаю Python )) Появилась необходимость сделать такую программу, которая может сравнивать и подбирать данные из двух текстовых файлов, а результаты записывать в третий текстовый файл. Например, содержание первого текстового файла:
Сидоров Иван Сидорович новичок программирование, тестирование 1С, SQL
Иванова Ольга Петровна профессионал программирование, Java, SQL, 1C
Ветров Иван Анатольевич профессионал HTML, Postgree, Unix, 1C
Второй файл содержит список задач, и возможное время исполнения:
Протестировать базу 1С новичок тестирование 1ч
Написать программу на Java профессионал программирование 4ч
Развертывание SQL-сервера профессионал 8ч
В третьем файле хотелось бы иметь такой результат, который бы программа подбирала из двух предыдущих, причем неисполнимые результаты подбора относила бы в свою графу, например:
Сидоров Иван Сидорович - 1ч
1. Протестировать базу 1С новичок тестирование 1ч
Иванова Ольга Петровна - 4ч
1. Написать программу на Java - 4ч
Неисполнимые задачи:
1. Развертывание SQL-сервера - 8ч
Подскажите пожалуйста, какой должен быть код такой программы? Очень прошу помощи, спасибо заранее!
Офлайн
Тебе нужно прочитать первый файл и получить словари строк, где в каждом таком словаре будет имя, уровень, список областей, список навыков.
Тебе нужно прочитать второй файл и получить словари строк, где в каждом таком словаре будет задание, уровень, область, время.
Тебе нужно написать поиск в одних словарях по значениям из других словарей.
То есть тебе надо данные сначала из файла ввести в оперативную память, причём не просто ввести их, а ещё сформировать из этих данных удобные структуры, в которых легко определять, где и что находится, и в которых легко искать какие-то значения в списках значений. Так что это словари, в которых есть просто строки, а есть списки, а могут быть и ещё какие-то словари маленькие.
Ну вот в эту сторону копай.
Отредактировано py.user.next (Окт. 24, 2023 02:21:09)
Офлайн
Спасибо огромное за ответ! А где можно пример кода посмотреть? Я понял, что нужно делать словари. Код примерно так выглядит?
file = open(“text”)
onstring = file.read().split(“\n”)
dict = dict()
for item in onstring:
key = item.split(“ ”)
value = item.split(“ ”)
dict = value
file.close()
{'smt1': , ‘smt2’: , ‘smt3’: }
Или как-то по-другому?
Офлайн
Тебе нужно прежде всего подумать над форматом файлов
ПОнимаешь у тебя в каждой стоке разное количество слов а тебе нужно как то логически разделять их на блоки
Например
1.Протестировать базу 1С новичок тестирование 1ч
2.Написать программу на Java которая добывает нефть профессионал программирование 4ч
Итого - разделим на четыре блока: задача - уровень - вид - время
1.Протестировать базу 1С - новичок - тестирование - 1ч
2.Написать программу на Java которая добывает нефть - профессионал - программирование - 4ч
Вот когда ты будешь в питоне считывать файл - тебе нужно как то делить эти строки на блоки
Реально можно использовать любой символ “:” “;” “#” и так далее а потом уже в коде разбивать строку по этому символу
методом split()
Однако это упоротый вариант
Тут стоит подумать о том что бы использовать CSV формат файла где данные уже разбиты поблочно через разделитель
Ибо сам по себе текстовый файл как струуктура данных непригоден
Ну а как разберешься - все сразу станет легко и понятно как это сделать
тебе даже словарь не нужен будет так как у тебя каждая строка это всегда 4 блока
Офлайн
ZerG
Тебе нужно прежде всего подумать над форматом файловПОнимаешь у тебя в каждой стоке разное количество слов а тебе нужно как то логически разделять их на блокиНапример 1.Протестировать базу 1С новичок тестирование 1ч2.Написать программу на Java которая добывает нефть профессионал программирование 4чИтого - разделим на четыре блока: задача - уровень - вид - время1.Протестировать базу 1С - новичок - тестирование - 1ч2.Написать программу на Java которая добывает нефть - профессионал - программирование - 4чВот когда ты будешь в питоне считывать файл - тебе нужно как то делить эти строки на блокиРеально можно использовать любой символ “:” “;” “#” и так далее а потом уже в коде разбивать строку по этому символуметодом split()Однако это упоротый вариант Тут стоит подумать о том что бы использовать CSV формат файла где данные уже разбиты поблочно через разделительИбо сам по себе текстовый файл как струуктура данных непригоденНу а как разберешься - все сразу станет легко и понятно как это сделатьтебе даже словарь не нужен будет так как у тебя каждая строка это всегда 4 блока
Офлайн
https://realpython.com/python-csv/
Офлайн
Огромное спасибо!
Офлайн