__version__ = "0.1.0" __author__ = "Tabledevil " from visidata import Sheet, BaseSheet, vd @Sheet.api def hide_empty_and_superfluous_cols(sheet): """ Given a sheet, hides columns that are empty or superfluous (contain the same value in every row). """ # Count how many columns were hidden counter = 0 # Check each column for being empty or superfluous for col in sheet.visibleCols: # If the column is not hidden if col.width and col.width > 0: # Check if the column is empty (all cells are empty or None) if all([col.getValue(row) in (None, "", "null") for row in sheet.rows]): # Hide the column col.width = 0 counter += 1 # Skip the next check for same values since all cells are empty or None continue # Check if the column is superfluous (contains the same value in every row) # collect all values in the column as strings values = set([f'{col.getValue(row)}' for row in sheet.rows if col.getValue(row) not in (None, "", "null")]) # If there is only one value in the column if len(values) == 1: # Hide the column col.width = 0 counter += 1 vd.status(f"Hid {counter} empty/superfluous columns.") else: vd.status("No empty/superfluous columns to hide.") Sheet.addCommand(None, "tke-hidecol", "sheet.hide_empty_and_superfluous_cols()")