import csv def filter_csv_by_api_and_status(csv_file_name, status_code, api_name): """ Reads the given CSV file and prints rows where both the API and HTTP Status Code match the inputs. Args: csv_file_name (str): Path to the CSV file. status_code (str or int): HTTP status code to filter by. api_name (str): API name to filter by. """ with open(csv_file_name, mode='r', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) headers = next(reader) # Normalize headers to remove whitespace headers = [h.strip() for h in headers] api_idx = 0 status_idx = 1 count_index = 2 found = False total_count = 0 for row in reader: # Skip empty or malformed rows if len(row) < max(api_idx, status_idx) + 1: continue if api_name in row[api_idx].strip() and str(row[status_idx]).strip() == str(status_code): print({headers[api_idx]: row[api_idx], headers[status_idx]: row[status_idx], headers[2]: row[2] if len(row) > 2 else ''}) found = True total_count += int(row[count_index]) if not found: print('No matching rows found.') print(f'Total count: {total_count}') # Example usage (uncomment to test): filter_csv_by_api_and_status('csv/error-data.csv', 403, 'SimpleFlow')