2016-05-20 7 views
1

Ich benutze Nokogiri, um HTML-Daten in YAML-Strukturierung zu analysieren. Ich habe Probleme zu sehen, wie man HTML-Tabellen im YAML-Format lesen kann. Jeder mit vorheriger Erfahrung? Wenn ja, bitte etwas Licht werfenHTML-Tabelle zu YAML-Konvertierung

Antwort

0

Ich habe beide Richtungen (YAML -> HTML und HTML -> YAML) getan und die YAML zu HTML ist eigentlich in der ruamel.yaml.cmd Paket, von dem ich der Autor bin.

Das HTML ist eine Tabelle, die gegeben ist, ich nehme an, es hat eine Kopfzeile. So können nehmen Sie die folgende Tabelle mit einer Kopfzeile mit Elementen A, B und C und zwei Datenreihen von Zahlen:

A B C 
1 2 3 
5 6 7 

gibt es mehrere Möglichkeiten, wie Sie dies in YAML darstellen können, sind hier zwei Beispiele.

  1. oberste Ebene ist eine Abbildung, der Wert Header der Schlüssel und die Spalte der Wert in einer Sequenz:

    A: [1, 5] 
    B: [2, 6] 
    C: [3, 7] 
    
  2. oberste Ebene ist die Liste, und jedes Element ist eine Abbildung von Header-Wert, um Daten Wert:

    - A: 1 
        B: 2 
        C: 3 
    - A: 5 
        B: 6 
        C: 7 
    

ich finde die zweite intuitiver, aber es ist ausführlicher als die Header-Strings Als Skalare in jedem Sequenzelement wiederholt werden.

Wenn Ihre Tabelle Zeilen- "Header" und Spaltenüberschriften hat, können Sie sich eher für ein Toplevel-Mapping entscheiden, bei dem der Schlüssel eine Sequenz aus Zeilen- und Spaltenkopf und der Wert der Inhalt der Zelle ist.
Tabelle:

A B 
K 1 2 
L 5 6 

entsprechende YAML:

[A, K]: 1 
[A, L]: 5 
[B, K]: 2 
[B, L]: 6 

Bitte beachten Sie, dass bei den meisten YAML Kipper Sie keine Kontrolle über die Reihenfolge der Tasten in der Abbildung Sie produzieren möchten haben, ohne dass die YAML uglifying mit Anhängen.

Sobald Sie sich für das Ausgabeformat entschieden und die Tabelle geparst haben, sollte es relativ einfach sein, über die Zeilen/Spalten und Zellen der Tabelle zu gehen, um die Datenstruktur zu erstellen, die nach YAML so ablegt, wie Sie es wollen ist, was ich für die obigen Beispiele getan habe, mit Python und ruamel.yaml)

Verwandte Themen