Skip to content

Instantly share code, notes, and snippets.

@rmorenobello
Created November 20, 2025 12:45
Show Gist options
  • Select an option

  • Save rmorenobello/b8e3127ef6c72b024a7a646c1a584d7c to your computer and use it in GitHub Desktop.

Select an option

Save rmorenobello/b8e3127ef6c72b024a7a646c1a584d7c to your computer and use it in GitHub Desktop.
Python scripts for Notepad++ to compress horizontally a text table with elements enclosed by " separated by spaces
# -*- coding: utf-8 -*-
# Script para Notepad++ usando el plugin PythonScript
# Formatea tablas con columnas delimitadas por comillas dobles, manteniendo las comillas.
# Se aplica a todo el contenido de la pestaña Notepad++ actual.
# Deja sólo dos espacios entre el final del elemento más largo y la siguiente columna.
#
# "COL1" "COL2" "COL3" "COL1" "COL2" "COL3"
# "VALUE1____________""" "VALUE3" --> "VALUE1____________" "" "VALUE3"
from Npp import editor
import re
def format_table_with_quotes():
# Obtiene el texto seleccionado o todo el documento
text = editor.getSelText() if editor.getSelText() else editor.getText()
# Divide en líneas y elimina líneas vacías
lines = [line.strip() for line in text.splitlines() if line.strip()]
# Extraer columnas usando comillas como delimitador
rows = []
for line in lines:
# Encuentra todos los valores entre comillas
parts = re.findall(r'"(.*?)"', line)
rows.append(parts)
# Calcular el ancho máximo de cada columna (incluyendo comillas)
col_widths = []
for row in rows:
for i, cell in enumerate(row):
cell_with_quotes = '"' + cell + '"'
if len(col_widths) <= i:
col_widths.append(len(cell_with_quotes))
else:
col_widths[i] = max(col_widths[i], len(cell_with_quotes))
# Construir la tabla formateada
formatted_lines = []
for row in rows:
formatted_row = ''
for i, cell in enumerate(row):
cell_with_quotes = '"' + cell + '"'
formatted_row += cell_with_quotes.ljust(col_widths[i])
if i < len(row) - 1:
formatted_row += ' ' # 2 espacios entre columnas
formatted_lines.append(formatted_row.rstrip())
# Reemplazar el texto en el editor
editor.replaceSel('\n'.join(formatted_lines))
# Ejecutar la función
format_table_with_quotes()
# -*- coding: utf-8 -*-
# Script para Notepad++ usando el plugin PythonScript
# Formatea SOLO la tabla seleccionada con columnas delimitadas por comillas dobles.
# Deja sólo dos espacios entre el final del elemento más largo y la siguiente columna.
#
# "COL1" "COL2" "COL3" "COL1" "COL2" "COL3"
# "VALUE1____________""" "VALUE3" --> "VALUE1____________" "" "VALUE3"
from Npp import editor
import re
def format_selected_table_with_quotes():
# Obtiene el texto seleccionado
selected_text = editor.getSelText()
# Si no hay texto seleccionado, no hacemos nada y salimos.
if not selected_text:
# Opcional: Puedes mostrar un mensaje al usuario
# notepad.messageBox("Por favor, selecciona el texto de la tabla a formatear.", "Advertencia")
return
# Divide en líneas y elimina líneas vacías del texto seleccionado
lines = [line.strip() for line in selected_text.splitlines() if line.strip()]
# Extraer columnas usando comillas como delimitador
rows = []
for line in lines:
parts = re.findall(r'"(.*?)"', line)
if parts: # Asegurarse de que se encontraron partes válidas
rows.append(parts)
# Opcional: Podrías añadir lógica aquí para líneas que no son parte de la tabla
# pero para este script, si no tienen comillas, no se procesan como fila de tabla.
# Si no se encontraron filas con el formato de comillas en la selección,
# no hay nada que formatear.
if not rows:
return
# Calcular el ancho máximo de cada columna (incluyendo comillas)
col_widths = [0] * max(len(row) for row in rows) if rows else []
for row in rows:
for i, cell in enumerate(row):
cell_with_quotes = '"' + cell + '"'
if i < len(col_widths):
col_widths[i] = max(col_widths[i], len(cell_with_quotes))
else: # En caso de que una fila posterior tenga más columnas
col_widths.append(len(cell_with_quotes))
# Construir la tabla formateada
formatted_lines = []
for row in rows:
formatted_row_parts = []
for i, cell in enumerate(row):
cell_with_quotes = '"' + cell + '"'
width = col_widths[i] if i < len(col_widths) else len(cell_with_quotes)
formatted_row_parts.append(cell_with_quotes.ljust(width))
formatted_lines.append(' '.join(formatted_row_parts)) # 2 espacios entre columnas
# Reemplazar el texto seleccionado con la tabla formateada
# Esto reemplazará el texto exactamente donde estaba la selección original.
editor.beginUndoAction() # Para que sea una sola acción de deshacer
editor.replaceSel('\n'.join(formatted_lines))
editor.endUndoAction() # Finalizar acción de deshacer
# Ejecutar la función cuando se invoca el script
format_selected_table_with_quotes()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment