import csv from collections import Counter def analyze_votes(file_path): # Счетчик для хранения результатов vote_counts = Counter() # Название целевой колонки target_column = 'Vote(s)' try: with open(file_path, mode='r', encoding='utf-8') as csvfile: # Используем DictReader, чтобы обращаться к колонкам по имени reader = csv.DictReader(csvfile) # Проверяем, есть ли нужная колонка if target_column not in reader.fieldnames: print(f"Ошибка: Колонка '{target_column}' не найдена в файле.") print(f"Доступные колонки: {reader.fieldnames}") return # Проходим по каждой строке for row in reader: raw_data = row[target_column] country_data = row["Country"] # if country_data not in ["ru"]: # continue if not raw_data: continue # 1. Разбиваем строку по запятой # 2. Убираем пробелы вокруг имени (strip) candidates = [name.strip() for name in raw_data.split(',')] # Обновляем счетчик for candidate in candidates: if candidate: # Проверка, чтобы не считать пустые строки vote_counts[candidate] += 1 # Подсчет общего количества голосов total_votes = sum(vote_counts.values()) if total_votes == 0: print("Голосов не найдено.") return # Вывод результатов # most_common() автоматически сортирует от большего к меньшему print(f"{'Участник':<100} | {'Голоса':<10} | {'%':<10}") print("-" * 55) for name, count in vote_counts.most_common(): percentage = (count / total_votes) * 100 _name = "" for i in name.split(" "): if i.startswith("https"): break _name += i + " " print(f"{_name:<100} | {count:<10} | {percentage:.2f}%") print("-" * 55) print(f"Всего обработано голосов: {total_votes}") except FileNotFoundError: print(f"Файл '{file_path}' не найден. Проверьте путь к файлу.") except Exception as e: print(f"Произошла ошибка: {e}") # --- ЗАПУСК --- # Укажите здесь имя вашего файла csv_filename = "" analyze_votes(csv_filename)