Tak trochu jsem programátor a proto jsem v OpenRefine místo základního jazyku pro transformace GREL velmi rád používal Jython. GREL je sice jednoduchý, ale neumožňuje skoro žádné trochu složitější rozhodovací podmínky a cykly.
Zatím co Jython (import Pythonu do Javy) umožňuje mnohem více. Problém však nastává, když zjistíte, že samotná implementace Jythonu je zastaralá o docela ořezaná. Co tak chybí? Třeba knihovna JSON a další které v Pythonu pravidelně používám. Proto jsem se tento nedostatek rozhodl opravit.
Co budeme dělat?
Smažeme starou verzi Jython knihovny 2.5.3 v OpenRefine a nahradíme ji verzí 2.7.0 (Python 2.7).
Jaký v tom bude rozdíl?
26 Mb funkcí :), což je dost. Jestli si to chcete zkontrolovat, tak se můžete podívat na http://www.jython.org/docs/library/indexprogress.html co všechno můžete provádět.
V praxi to pak znamená, že vám pojede většin Python skriptů. Následovně, pak řešení vašeho problému může vypadat tak, že zajdete na StackOverFlow a okopírujete vhodný skript a na vstup dáte proměnou „value“ a return vám vrátí váš výsledek do OpenRefine.
Příkladem takového superkrátkého scriptu může třeba být:
Odstranění diakritiky:
#odstranění diakritiky a lowercase písma import unicodedata return unicodedata.normalize('NFKD', value).encode('ASCII', 'ignore').lower()
Možností je nekonečně…
Návod:
- Stáhnout si ze stránky http://www.jython.org/downloads.html si aktuální soubor Jython 2.7.0 – Standalone Jar.
- Ten tímto souborem nahradíte standardní knihovnu.
Kde?
Vaše cesta k OpenRefine .. \openrefine-2.6-beta.1\webapp\extensions\jython\module\MOD-INF\lib Který soubor nahradit? jython-standalone-2.5.3.jar Jak bude vypadat novy? jython-standalone-2.7.0.jar
To je vše?
Ano.
Proč to pouštím ven?
Protože v dalších dílech o OpenRefine se podíváme na skripty, které tento update využívají.
Příkladem třeba „Hledání zanořených prvků v JSONu podle názvu“, co bude v dalším díle.