Ich verwende Excel, um Tabellen zu erstellen, die eine Spalte mit hyperverlinkten Zellen enthalten. Jetzt möchte ich diese Daten in das Wiki-Tabellenformat konvertieren. Wenn ich tab2wiki verwende (https://magnustools.toolforge.org/tab2wiki.php), verliere ich den Hyperlink. Welches Tool gibt es, das den Hyperlink bei der Konvertierung übernimmt?
Antwort1
Wenn Sie wissen, wie eine Tabelle im Wiki-Code aussieht, können Sie fast den gesamten Tabellenquellcode in Excel selbst erstellen. Den Anfang und das Ende einer Tabelle fügen Sie im Wiki-Quellcode ein. Zum Erstellen von Hyperlinks würde beispielsweise Folgendes aussehen: A1 = [[
, B1 =Zielartikelname, C1 = ]]
, D1 = = A1&B1&C1
.
Antwort2
Letztendlich wäre die beste Vorgehensweise, das tab2wiki
Tool um Link-Handling-Unterstützung zu erweitern (QuellcodeHier), insbesondere angesichts der explosionsartigen Zunahme generischer TLDs in den letzten Jahren. Nichts ist besser als das Schreiben von speziell entwickeltem Code zur Lösung des Problems, das komplexer ist, als diese begrenzte Lösung (siehe unten) bewältigen kann.
Allerdings konnte ich mit Regex und Perl etwas zusammenhacken, daskönntetun Sie, was Sie brauchen, abhängig von Ihren Bedingungen, zumindest wenn Sie Zugriff auf Linux haben oder diesen Ansatz an eine andere Umgebung anpassen können. Ich glaubeNotizblock++, verfügbar unter Windows, unterstützt reguläre Ausdrücke in seinem Suchen-und-Ersetzen-Tool, und Sie können diesen Ansatz möglicherweise anpassen, um diese Schnittstelle mit dem folgenden regulären Ausdruck zu verwenden (d. h. fügen Sie die Ausgabe von tab2wiki
in Notepad++ ein und verwenden Sie dann den regulären Ausdruck in seinem Suchen-und-Ersetzen-Tool).
Zunächst die Eingabe, die bereitgestellt wird für tab2wiki
:
lol wut noway asdf
1 no way https://www.google.com so cool https://test.net qwer zxcv
2 http://kagi.org sd
3 fd d https://netflix.org
4 fdasf f http://www.apple.org
Beim Einfügen tab2wiki
ergibt sich folgender Text:
{| border="1" class="sortable"
!lol!!wut!!noway!!asdf
|-
|1||no way https://www.google.com so cool https://test.net||qwer||zxcv
|-
|2||||http://kagi.org||sd
|-
|3||fd||d||https://netflix.org
|-
|4||fdasf||f||http://www.apple.org
|}
Dieses Beispiel umfasst Zellen mit mehreren Links sowie Endzellen, die ganz am Ende Links haben, und leere Zellen.
Wenn Sie diese Datei irgendwo speichern (wie ) /tmp/testwikifile
, und dann den folgenden Befehl mit perl
der Regex-Engine von ausführen, werden um jeden der Links das „ [
und“ eingefügt:]
cat /tmp/testtable3 | perl -p -e 's/(http.*?)\.(com|org|net)/\[\1.\2\]/gm'
Die Ausgabe:
{| border="1" class="sortable"
!lol!!wut!!noway!!asdf
|-
|1||no way [https://www.google.com] so cool [https://test.net]||qwer||zxcv
|-
|2||||[http://kagi.org]||sd
|-
|3||fd||d||[https://netflix.org]
|-
|4||fdasf||f||[http://www.apple.org]
|}
Einschränkungen:
- Die Links müssen mit
http
mindestens beginnen - Die Liste der Top-Level-Domains (TLDs) für die Links muss bekannt sein
Details zum regulären Ausdruck:
Dieser reguläre Ausdruck 's/(http.*?)\.(com|org|net)/\[\1.\2\]/g'
kann wie folgt aufgeschlüsselt werden:
- Führen Sie eine Ersetzung einer Eingabezeichenfolge durch eine neue Zeichenfolge a la durch
s/start/replacement/
und tun Sie dies globalg
(suchen Sie nach allen Übereinstimmungen). - Suchen Sie nach
http
„plus irgendetwas anderem“.*
und führen Sie es austräge?
. Suchen Sie dann nach einem Punkt\.
, und suchen Sie dann nach einem voncom
,org
, odernet
über(com|org|net)
. Dadurch werden zwei Erfassungsgruppen erstellt, die wir dann bei unserer Ersetzung verwenden können. - Die Ersetzung erfolgt durch
\[\1.\2\]
, wobei\1
alles vonhttp
bis zum Punkt ist und\2
eines voncom
,org
, oder istnet
. Daher: „Setzen Sie einen Punkt.
zwischen diese beiden Übereinstimmungen, um den Link neu zu erstellen, und füllen Sie den Link mit öffnenden[
und schließenden]
Klammern auf.“