From 2396d73b2f10c6321dbb805cca33a0597c8155e5 Mon Sep 17 00:00:00 2001 From: Crai-cry Date: Sat, 28 Mar 2026 16:20:56 +0300 Subject: [PATCH] change encoding --- data/test.json | 24 ++++++++++++------------ vacancy_analyzer.py | 13 ++++++++----- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/data/test.json b/data/test.json index c45f027..5d63de9 100644 --- a/data/test.json +++ b/data/test.json @@ -1,9 +1,9 @@ [ { "id": 1, - "title": "Python ", - "company": "", - "city": "", + "title": "Python разработчик", + "company": "Яндекс", + "city": "Москва", "salary_from": 150000, "salary_to": 200000, "skills": ["Python", "SQL", "Django", "PostgreSQL"], @@ -12,8 +12,8 @@ { "id": 2, "title": "Data Engineer", - "company": "", - "city": "", + "company": "Тинькофф", + "city": "Москва", "salary_from": 180000, "salary_to": 250000, "skills": ["Python", "SQL", "Spark", "Airflow"], @@ -23,7 +23,7 @@ "id": 3, "title": "Backend Developer", "company": "Ozon", - "city": "-", + "city": "Санкт-Петербург", "salary_from": 130000, "salary_to": 170000, "skills": ["Python", "FastAPI", "MongoDB"], @@ -32,8 +32,8 @@ { "id": 4, "title": "Data Analyst", - "company": "", - "city": "", + "company": "Яндекс", + "city": "Москва", "salary_from": 140000, "salary_to": 180000, "skills": ["Python", "SQL", "Tableau"], @@ -42,8 +42,8 @@ { "id": 5, "title": "Junior Python Developer", - "company": "", - "city": "", + "company": "Сбер", + "city": "Москва", "salary_from": 100000, "salary_to": 130000, "skills": ["Python", "SQL", "Git"], @@ -53,7 +53,7 @@ "id": 6, "title": "Senior Python Developer", "company": "Wildberries", - "city": "", + "city": "Москва", "salary_from": 200000, "salary_to": 300000, "skills": ["Python", "SQL", "Kafka", "Kubernetes"], @@ -63,7 +63,7 @@ "id": 7, "title": "Full Stack Developer", "company": "Avito", - "city": "", + "city": "Москва", "salary_from": 170000, "salary_to": 220000, "skills": ["Python", "JavaScript", "React", "SQL"], diff --git a/vacancy_analyzer.py b/vacancy_analyzer.py index aec7b1a..dae1384 100644 --- a/vacancy_analyzer.py +++ b/vacancy_analyzer.py @@ -1,6 +1,6 @@ import json from collections import Counter -def load_vacancies(filepath: str) -> list[dict]: +def load_vacancies(filepath: str) -> list[dict]: try: with open(filepath,"r") as file: return json.load(file) @@ -12,9 +12,9 @@ def filter_by_city(vacancies: list[dict], city: str) -> list[dict]: def filter_by_skills(vacancies: list[dict], required_skills: list[str]) -> list[dict]: return [i for i in vacancies if all(skill.lower() in set(k.lower() for k in i.get('skills')) for skill in required_skills ) ] def filter_by_salary(vacancies: list[dict], min_salary: int) -> list[dict]: - return [v for v in vacancies if v.get('salary_to') and v.get('salary_from') and v.get('salary_to')>= min_salary and v.get('salary_form')> min_salary] + return [v for v in vacancies if v.get('salary_to') and v.get('salary_from') and v.get('salary_to')>= min_salary and v.get('salary_from')> min_salary] def extract_unique_companies(vacancies: list[dict]) -> list[str]: - return {v.get('company') for v in vacancies if v.get('company')} + return list({v.get('company') for v in vacancies if v.get('company')}) def extract_top_skills(vacancies: list[dict], top_n: int) -> list[tuple[str, int]]: all_skills = [] for v in vacancies: @@ -72,8 +72,11 @@ def main(): skils_list.append(input(f"Write №{i + 1} skill: ")) filered_vacancies=filter_by_skills(filered_vacancies,skils_list) filered_vacancies = filter_by_salary(filered_vacancies,int(input("Write salary: "))) - print(format_vacancy_short(x) for x in filered_vacancies) - + print("Уникальные компании: ", ", ".join(extract_unique_companies(filered_vacancies))) + + + +