{"id":23669155,"url":"https://github.com/topotun77/price-list","last_synced_at":"2026-05-14T20:07:19.767Z","repository":{"id":260161367,"uuid":"880490209","full_name":"Topotun77/Price-list","owner":"Topotun77","description":"Анализатор прайс-листов (python, scv, pandas)","archived":false,"fork":false,"pushed_at":"2024-11-04T19:26:13.000Z","size":456,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T16:55:37.154Z","etag":null,"topics":["csv","pandas","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Topotun77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-29T20:23:18.000Z","updated_at":"2024-11-07T15:57:10.000Z","dependencies_parsed_at":"2025-02-19T14:47:30.203Z","dependency_job_id":"3bbad63e-fd8f-467a-8c94-0292a7276bce","html_url":"https://github.com/Topotun77/Price-list","commit_stats":null,"previous_names":["topotun77/practice","topotun77/price-list"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Topotun77/Price-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2FPrice-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2FPrice-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2FPrice-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2FPrice-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Topotun77","download_url":"https://codeload.github.com/Topotun77/Price-list/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2FPrice-list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33041269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","pandas","python"],"created_at":"2024-12-29T08:18:01.596Z","updated_at":"2026-05-14T20:07:19.750Z","avatar_url":"https://github.com/Topotun77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Анализатор прайс-листов\n\nДанный проект помогает анализировать массив прайс-листов в формате csv. Прайс листы могут содержать различные поля, как по количеству, так и по названию. Алгоритм сам выделяет нужные поля, удаляет ненужные. Управление \"нужными\" полями осужествяется через словарь **`WORD_DICT`**.  \n\nРешение реализовано в 2 вариантах:\n**project.py** - решение через библиотеку **csv**, в конце выводит HTML-файл **output.html**\n**project_pandas.py** - решение через библиотеку _**pandas**_, в конце выводит HTML-файл **output_pd.html**\nОба варианта осуществляют поиск без учета регистра. Для названия полей введен словарь **`WORD_DICT`**.  \n\nТакже есть возможность использования данного модуля в качестве библиотеки внутри других решений.  \n\nВ модуле project_pandas.py цикл поиска нужных столбцов заменен на более универсальный. Так можно управлять полями через **`WORD_DICT`** не переписывая логику метода **load_prices()**.\n\n```python\nfor k, v in WORD_DICT.items():\n     if field in v:\n         data_ = data_.rename(columns={field: k})\n         break\nelse:\n    data_ = data_.drop(field, axis=1)\n```\nВывод на консоль осуществляется в формате таблицы:\n```\n-------------------------------------------------------------------------------------------------------\n|  №   |                 Название                 |    Цена    |  Вес  |      Файл       | Цена за кг.|\n-------------------------------------------------------------------------------------------------------\n|    1 | Филе гигантского кальмара                |     617.00 |     1 | price_0.csv     |     617.00 |\n|    2 | Филе гигантского кальмара                |     639.00 |     1 | price_4.csv     |     639.00 |\n|    3 | Филе гигантского кальмара                |     639.00 |     1 | price_6.csv     |     639.00 |\n|    4 | Филе гигантского кальмара                |     683.00 |     1 | price_1.csv     |     683.00 |\n|    5 | Филе гигантского кальмара                |    1381.00 |     2 | price_5.csv     |     690.50 |\n|    6 | Кальмар тушка                            |    3420.00 |     3 | price_3.csv     |    1140.00 |\n|    7 | Кальмар тушка                            |    4756.00 |     4 | price_0.csv     |    1189.00 |\n-------------------------------------------------------------------------------------------------------\n```\nСхематичное изображение алгоритма работы кода:\n\n```mermaid\n---\nconfig:\n  layout: elk\n  look: handDrawn\n  theme: neutral\n  elk:\n    mergeEdges: false\n    nodePlacementStrategy: LINEAR_SEGMENTS\n---\nflowchart TB\n  input[Ввод каталога с файлами данных] --\u003e |загрузка файлов| output[Вывод сводного результата]\n  output --\u003e input_search[Ввод строки для поиска]\n  input_search --\u003e if_search{Завершить поиск?}\n  if_search --\u003e |Yes| output_search_html[Вывод результата поиска в html-файл]\n  if_search --\u003e |No| search_str[Осуществить поиск]\n  search_str --\u003e |поиск| output_search[Вывод результата поиска]\n  output_search_html --\u003e end_kod[Завершение кода]\n  output_search --\u003e input_search\n```\n### Скриншот консольного вывода: \n![alt text](https://github.com/Topotun77/Price-list/blob/master/Price-list/ScreenShots/n04-pandas.JPG?raw=true)\n\n### Скриншот html-вывода:\n![alt text](https://github.com/Topotun77/Price-list/blob/master/Price-list/ScreenShots/n05-html.JPG?raw=true)\n\n### Ниже приведен текст технического задания:\n\n```\nНаписать анализатор прайс-листов.\nВ папке находятся несколько файлов, содержащих прайс-листы от разных поставщиков.\nКоличество и название файлов заранее неизвестно, однако точно известно, что в названии\nфайлов прайс-листов есть слово \"price\". Файлы, не содержащие слово \"price\" следует игнорировать.\nФормат файлов: данные, разделенные точкой с запятой.\nПорядок колонок в файле заранее неизвестен, но известно, что столбец с названием товара называется\nодним из вариантов: \"название\", \"продукт\", \"товар\", \"наименование\".\nСтолбец с ценой может называться \"цена\" или \"розница\".\nСтолбец с весом имеет название \"фасовка\", \"масса\" или \"вес\" и всегда указывается в килограммах.\nОстальные столбцы игнорировать.\n\nПрограмма должна загрузить данные из всех прайс-листов и предоставить интерфейс для поиска товара\nпо фрагменту названия с сорторовкой по цене за килогорамм.\nИнтерфейс для поиска реализовать через консоль, циклически получая информацию от пользователя.\nЕсли введено слово \"exit\", то цикл обмена с пользователем завершается, программа выводит сообщение\nо том, что работа закончена и завершает свою работу. В противном случае введенный текст считается\nтекстом для поиска. Программа должна вывести список найденных позиций в виде таблицы:\n\n№     Наименование                              цена  вес     файл     цена за кг.\n1     филе гигантского кальмара                  617    1  price_0.csv  617.0\n2     филе гигантского кальмара                  639    1  price_4.csv  639.0\n3     филе гигантского кальмара                  639    1  price_6.csv  639.0\n4     филе гигантского кальмара                  683    1  price_1.csv  683.0\n5     филе гигантского кальмара                 1381    2  price_5.csv  690.5\n6     кальмар тушка                             3420    3  price_3.csv  1140.0\n7     кальмар тушка                             4756    4  price_0.csv  1189.0\n\nСписок должен быть отсортирован по возрастанию стоимости за килограмм.\n\nПредусмотреть вывод массива данных в текстовый файл в формате html.\nСоздать класс с методами:\nload_prices - сканирует папку и загружает данные\nexport_to_html - выгружает все данные в html файл\nfind_text - получает текст и возвращает список позиций, содержащий этот текст в названии продукта.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Fprice-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftopotun77%2Fprice-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Fprice-list/lists"}