37 Stimmen

Der einfachste Weg, eine Liste in eine HTML-Tabelle in Python zu verwandeln?

Sagen wir, ich habe eine Liste wie diese:

['one','two','three','four','five','six','seven','eight','nine']

und ich möchte damit experimentieren, diese Daten in eine HTML-Tabelle mit verschiedenen Dimensionen umzuwandeln:

one     two    three
four    five   six
seven   eight  nine

o

one    four   seven
two    five   eight
three  six    nine

o

one    two   three  four
five   six   seven  eight
nine

Gibt es eine Bibliothek, die dies behandeln kann, ohne verrückte Liste Spleißen oder verschachtelte for-Schleifen tun zu müssen? Meine Google-Suchen zeigen, dass es ein paar HTML-Bibliotheken, aber ich habe nicht die Zeit, durch jede einzelne zu gehen, um zu sehen, wenn sie Tabellen sehr gut behandeln können. Musste das schon einmal jemand tun? Wenn ja, wie haben Sie es gemacht?

0voto

okm Punkte 23035

Vielleicht ist eine manipulierte Vorlage einfacher für Spielzeugcodes =p

def get_html_tbl(seq, col_count):
    if len(seq) % col_count:
        seq.extend([''] * (col_count - len(seq) % col_count))
    tbl_template = '<table>%s</table>' % ('<tr>%s</tr>' % ('<td>%s</td>' * col_count) * (len(seq)/col_count))
    return tbl_template % tuple(seq)

0voto

CypherX Punkte 5992

Obwohl diese Frage bereits beantwortet wurde, gibt es eine weitere Lösung, indem man numpy y pandas DataFrame . Da sich heutzutage viele Leute für Datenwissenschaft interessieren, dachte ich, dass es Spaß machen würde, diese Aufgabe mit Pandas zu lösen:

GITHUB-LÖSUNG:
Ich habe meine Lösung verfügbar unter mein GitHub-Repository die Sie auch im Google Colaboratory ausführen und erforschen können (ich empfehle dies dringend).

El benutzerdefinierte Funktion ( generate_html_with_table() ), die ich hier verwendet habe, ist in diesem Jupyter-Notebook .

LÖSUNG:
Um Ihre Lösung zu erhalten, führen Sie Folgendes aus:

data = ['one','two','three','four','five','six','seven','eight','nine']
columns = 4                   # Number of Columns
columns_or_rows = columns
column_name_prefix = 'Column' # Prefix for Column headers
span_axis = 1                 # Span along a row (1) or a column (0) first
showOutput = True             # Use False to suppress printing output

# Generate HTML
data_html, data_df = generate_html_with_table(data, columns_or_rows, column_name_prefix, span_axis, showOutput)

OUTPUT:

HTML Generated: 

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Column_0</th>
      <th>Column_1</th>
      <th>Column_2</th>
      <th>Column_3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>one</td>
      <td>two</td>
      <td>three</td>
      <td>four</td>
    </tr>
    <tr>
      <th>1</th>
      <td>five</td>
      <td>six</td>
      <td>seven</td>
      <td>eight</td>
    </tr>
    <tr>
      <th>2</th>
      <td>nine</td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </tbody>
</table>

code_output_with_spanning_along_a_row

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X