tablas seleccionar para leer graficar funciones datos crear con columnas archivo python list csv format stdout

python - para - seleccionar columnas de un dataframe pandas



Python-Imprimir la lista de cadenas CSV en columnas alineadas (2)

def printCsvStringListAsTable(csvStrings): # convert to list of lists csvStrings = map(lambda x: x.split('',''), csvStrings) # get max column widths for printing widths = [] for idx in range(len(csvStrings[0])): columns = map(lambda x: x[idx], csvStrings) widths.append( len( max(columns, key = len) ) ) # print the csv strings for row in csvStrings: cells = [] for idx, col in enumerate(row): format = ''%-'' + str(widths[idx]) + "s" cells.append(format % (col)) print '' |''.join(cells) if __name__ == ''__main__'': printCsvStringListAsTable([ ''col1,col2,col3,col4'', ''val1,val2,val3,val4'', ''abadfafdm,afdafag,aadfag,aadfaf'', ])

Salida:

col1 |col2 |col3 |col4 val1 |val2 |val3 |val4 abadfafdm |afdafag |aadfag |aadfaf

La respuesta de Alex Hall es definitivamente mejor y una forma concisa del mismo código que he escrito.

He escrito un fragmento de código que es totalmente compatible con Python 2 y Python 3 . El fragmento que escribí analiza datos y construye el resultado como una lista de cadenas de CSV .

El script proporciona una opción para:

  • escribir los datos en un CSV file , o
  • mostrarlo a la stdout .

Si bien podría iterar fácilmente a través de la lista y reemplazarla , con /t cuando se muestre a stdout (segunda opción de viñeta), los ítems tienen una longitud arbitraria, por lo que no se alinee en un formato agradable debido a las variaciones en las pestañas.

He investigado un poco, y creo que las opciones de formato de cadena podrían lograr lo que busco. Dicho esto, parece que no puedo encontrar un ejemplo que me ayude a obtener la sintaxis correcta.

Preferiría no usar una biblioteca externa . Soy consciente de que hay muchas opciones disponibles si tomé esa ruta, pero quiero que el script sea lo más compatible y simple posible.

Aquí hay un ejemplo:

value1,somevalue2,value3,reallylongvalue4,value5,superlongvalue6 value1,value2,reallylongvalue3,value4,value5,somevalue6

¿Puedes ayudarme por favor? Cualquier sugerencia será muy apreciada.


import csv from StringIO import StringIO rows = list(csv.reader(StringIO( ''''''value1,somevalue2,value3,reallylongvalue4,value5,superlongvalue6 value1,value2,reallylongvalue3,value4,value5,somevalue6''''''))) widths = [max(len(row[i]) for row in rows) for i in range(len(rows[0]))] for row in rows: print('' | ''.join(cell.ljust(width) for cell, width in zip(row, widths)))

Salida:

value1 | somevalue2 | value3 | reallylongvalue4 | value5 | superlongvalue6 value1 | value2 | reallylongvalue3 | value4 | value5 | somevalue6