Найти - Пользователи
Полная версия: Как соотносить данные из файлов txt и формировать новый txt c результатами
Начало » Центр помощи » Как соотносить данные из файлов txt и формировать новый txt c результатами
1
Uselink
Здравствуйте! Потихоньку изучаю 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
Тебе нужно прочитать первый файл и получить словари строк, где в каждом таком словаре будет имя, уровень, список областей, список навыков.
Тебе нужно прочитать второй файл и получить словари строк, где в каждом таком словаре будет задание, уровень, область, время.
Тебе нужно написать поиск в одних словарях по значениям из других словарей.

То есть тебе надо данные сначала из файла ввести в оперативную память, причём не просто ввести их, а ещё сформировать из этих данных удобные структуры, в которых легко определять, где и что находится, и в которых легко искать какие-то значения в списках значений. Так что это словари, в которых есть просто строки, а есть списки, а могут быть и ещё какие-то словари маленькие.

Ну вот в эту сторону копай.
Uselink
Спасибо огромное за ответ! А где можно пример кода посмотреть? Я понял, что нужно делать словари. Код примерно так выглядит?

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’: }

Или как-то по-другому?
ZerG
Тебе нужно прежде всего подумать над форматом файлов
ПОнимаешь у тебя в каждой стоке разное количество слов а тебе нужно как то логически разделять их на блоки

Например
1.Протестировать базу 1С новичок тестирование 1ч
2.Написать программу на Java которая добывает нефть профессионал программирование 4ч

Итого - разделим на четыре блока: задача - уровень - вид - время
1.Протестировать базу 1С - новичок - тестирование - 1ч
2.Написать программу на Java которая добывает нефть - профессионал - программирование - 4ч

Вот когда ты будешь в питоне считывать файл - тебе нужно как то делить эти строки на блоки
Реально можно использовать любой символ “:” “;” “#” и так далее а потом уже в коде разбивать строку по этому символу
методом split()
Однако это упоротый вариант
Тут стоит подумать о том что бы использовать CSV формат файла где данные уже разбиты поблочно через разделитель
Ибо сам по себе текстовый файл как струуктура данных непригоден

Ну а как разберешься - все сразу станет легко и понятно как это сделать
тебе даже словарь не нужен будет так как у тебя каждая строка это всегда 4 блока
Uselink
ZerG
Тебе нужно прежде всего подумать над форматом файловПОнимаешь у тебя в каждой стоке разное количество слов а тебе нужно как то логически разделять их на блокиНапример 1.Протестировать базу 1С новичок тестирование 1ч2.Написать программу на Java которая добывает нефть профессионал программирование 4чИтого - разделим на четыре блока: задача - уровень - вид - время1.Протестировать базу 1С - новичок - тестирование - 1ч2.Написать программу на Java которая добывает нефть - профессионал - программирование - 4чВот когда ты будешь в питоне считывать файл - тебе нужно как то делить эти строки на блокиРеально можно использовать любой символ “:” “;” “#” и так далее а потом уже в коде разбивать строку по этому символуметодом split()Однако это упоротый вариант Тут стоит подумать о том что бы использовать CSV формат файла где данные уже разбиты поблочно через разделительИбо сам по себе текстовый файл как струуктура данных непригоденНу а как разберешься - все сразу станет легко и понятно как это сделатьтебе даже словарь не нужен будет так как у тебя каждая строка это всегда 4 блока


Спасибо огромное за помощь! Можно ли попросить привести пример такого кода, как к примеру поделить на блоки? Я головой понимаю, как решать задачу, но не совсем понимаю, что в коде писать.
ZerG
https://realpython.com/python-csv/
Uselink
Огромное спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB