Как включить гиперссылку при конвертации из Excel в Wiki-таблицы?

Как включить гиперссылку при конвертации из Excel в Wiki-таблицы?

Я использую Excel для создания таблиц, которые включают столбец гиперссылочных ячеек. Теперь я хочу преобразовать эти данные в формат Wiki-таблицы. Если я использую tab2wiki (https://magnustools.toolforge.org/tab2wiki.php), я теряю гиперссылку. Какой инструмент доступен, чтобы перенести гиперссылку при конвертации?

решение1

Если вы знаете, как выглядит таблица в коде wiki, вы можете создать почти весь исходный код таблицы в самом Excel. Начало и конец таблицы вы добавите в исходный код wiki. Например, создание гиперссылок будет выглядеть примерно так: A1 = [[, B1 =название целевой статьи, С1 = ]], Д1 = = A1&B1&C1.

решение2

В конечном итоге, наилучшим решением будет расширение tab2wikiинструмента поддержкой обработки ссылок (исходный кодздесь), особенно учитывая взрывной рост числа общих TLD за последние несколько лет. Ничто не сравнится с написанием специального кода для решения этой проблемы, которая сложнее, чем это ограниченное решение (подробно описанное ниже) может справиться.

Тем не менее, мне удалось кое-что с помощью регулярных выражений и Perl написать,мощьделайте то, что вам нужно, в зависимости от ваших условий, по крайней мере, если у вас есть доступ к Linux или вы можете адаптировать этот подход к другой среде. Я считаю,блокнот++, доступный в Windows, поддерживает регулярные выражения в своем инструменте поиска и замены, и вы можете адаптировать этот подход для использования этого интерфейса с приведенным ниже регулярным выражением (т. е. вставить вывод tab2wikiв notepad++, а затем использовать регулярное выражение в его инструменте поиска и замены).

Во-первых, вводные данные, которые предоставляются 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

При вставке tab2wikiполучается следующий текст:

{| 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
|}

В этом примере есть ячейки с несколькими ссылками, а также конечные ячейки, имеющие ссылки в самом конце, а также пустые ячейки.

Сохранив этот файл где-нибудь, а-ля /tmp/testwikifile, а затем выполнив следующую команду с помощью perlдвижка регулярных выражений , мы обойдём и приклеим [и ]вокруг каждой из ссылок:

cat /tmp/testtable3 | perl -p -e 's/(http.*?)\.(com|org|net)/\[\1.\2\]/gm'

Выход:

{| 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]
|}

Ограничения:

  1. Ссылки должны начинаться httpкак минимум с
  2. Необходимо знать список доменов верхнего уровня (TLD) для ссылок.

Подробности регулярного выражения:

Это регулярное выражение 's/(http.*?)\.(com|org|net)/\[\1.\2\]/g'можно разбить следующим образом:

  1. Выполнить замену входной строки новой строкой, например s/start/replacement/, и сделать это глобально g(найти все совпадения).
  2. Найдите httpплюс что-нибудь еще .*и сделайте этолениво ?. Затем найдите период \., затем найдите один из com, org, или netчерез (com|org|net). Это устанавливает две группы захвата, которые мы затем можем использовать в нашей подстановке.
  3. Замена — \[\1.\2\], где \1все от httpдо точки, и \2одно из com, org, или net. Следовательно, «поставьте точку .между этими двумя совпадениями, чтобы переделать ссылку, и дополните ссылку открывающими [и закрывающими ]скобками».

Связанный контент