#!/usr/bin/env python3 """ Final correction - ensure we have exactly 89 dropped albums to match the 89 that were removed. """ import csv def main(): # Count how many we currently have current_dropped = 0 with open('top_500_albums_2023.csv', 'r', encoding='utf-8') as file: reader = csv.DictReader(file) for row in reader: if 'Dropped' in row['Status']: current_dropped += 1 print(f"šŸ“Š Current dropped albums: {current_dropped}") print(f"šŸ“Š Should have: 89") print(f"šŸ“Š Need to remove: {current_dropped - 89}") if current_dropped > 89: # Read all albums albums = [] with open('top_500_albums_2023.csv', 'r', encoding='utf-8') as file: reader = csv.DictReader(file) for row in reader: albums.append(row) # Remove the last excess dropped albums to_remove = current_dropped - 89 removed = 0 cleaned_albums = [] # Remove from the end for album in reversed(albums): if removed < to_remove and 'Dropped' in album['Status']: print(f"šŸ—‘ļø Removing: {album['Artist']} - {album['Album']}") removed += 1 else: cleaned_albums.insert(0, album) # Renumber current_rank = 1 for album in cleaned_albums: album['Rank'] = str(current_rank) current_rank += 1 # Write final CSV with open('top_500_albums_2023.csv', 'w', newline='', encoding='utf-8') as file: fieldnames = ['Rank', 'Artist', 'Album', 'Status', 'Info', 'Description'] writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerows(cleaned_albums) print(f"\nāœ… Final correction complete!") print(f"šŸ“Š Total albums: {len(cleaned_albums)} (500 main + 89 dropped)") if __name__ == "__main__": main()