Potřebovali jste někdy udělat z CSV tabulky (třeba exportované z Excelu) tabulku v HTML nebo dokonce vytvořit HTML se zcela vlastní strukturou (např. odrážkový seznam atp.)?

Ano? Pak se vám bude hodit jednoduché on-line řešení pro převod CSV na HTML (či XML, příp. transformaci CSV). Vše řeší jeden regulární výraz a pravidlo pro nahrazení zachycených částí textů (substringů).

Pokud trochu regulárním výrazům rozumíte, koukněte se přímo na ukázku.

Příklad

V našem případě je na vstupu CSV v US formátu, tj. oddělovač sloupců je čárka, nikoliv středník (jako v českém prostředí). Ukázkový řádek:

1, 1928, 22, "Janet Gaynor", "Seventh Heaven, Street Angel and Sunrise: A Song of Two Humans"

CSV má 5 sloupců: První tři sloupce jsou číselné a další dva řetězce. Je vidět, že řetězec může obsahovat i čárku. Tomu je přizpůsoben regulární výraz:

/([^,]+), ([^,]+), ([^,]+), "([^"]+)", "([^"]+)"/g

Z čeho se skládá?

  • / /g – jen obaluje obecně regulární výraz a g je příznak pro global match, tzn. hledej všechny výskyty (tj. i více výskytů)
  • část ([^,]+), zachytává číselné sloupce: ([^,]+), říká: zachyť (kulaté závorky) řetězec o 1 a více (+) libovolných znacích kromě (^) znaku čárky a zachytávaná část je ještě následované znaky čárka a mezera
  • část "([^"]+)", funguje analogicky, jen zachytáváme až část mezi uvozovkami a tedy uvnitř uvozovek řetězec o 1 a více znacích, které jsou cokoliv kromě uvozovek

Textové editory nebo třeba nástroj Regexr umožnit nahrazení řetězců pomocí regulárních výrazů – tzn. v řetězci náhrady odkazovat na části zachycené regulárním výrazem.

V našem příkladu je náhrada:

<li><em>$4</em> (age $3) in $5 ($2)</li>\n

kde $n, se odkazuje na část řetězce zabalenou v kulatých závorkách, kde n je pořadí (počítáno dle pořadí levé závorky). Zápis \n zajišťuje zalomení řádku.

Výsledkem tak je:

<li><em>Janet Gaynor</em> (age 22) in Seventh Heaven, Street Angel and Sunrise: A Song of Two Humans (1928)</li>

Poznámky

Pokud budete pracovat s CSV, kde je oddělovačem středník, vyměňte v příkladech čárku za středník.

Pokud v CSV za čárkou či středníkem není mezera (jako v našem příkladu), pak ji z regulárního výrazu taky odstraňte.

Pokud se do regulárních výrazů chcete ponořit více, koukněte na kompletní shrnutí syntaxe regulárních výrazů.

Převod CSV na vlastní HTML/XML on-linePokud potřebujete provést transformace nad velkým CSV, není optimální ho kopírovat do Regexru. Doporučuji použít například bezplatný Notepad++, kde funguje přesně stejný regulární výraz a řetězec náhrady. Stačí vybrat volbu Search mode: Regular expression.

Související

Nenech si to pro sebe...

Pokud tě článek zaujal, sdílej ho s ostatními. Díky!