Utilizo Excel para crear tablas que incluyen una columna de celdas con hipervínculos. Ahora quiero convertir estos datos al formato de tabla Wiki. Si uso tab2wiki (https://magnustools.toolforge.org/tab2wiki.php), pierdo el hipervínculo. ¿Qué herramienta está disponible que transfiere el hipervínculo en la conversión?
Respuesta1
Si sabe cómo se ve una tabla en el código wiki, puede crear casi todo el código fuente de la tabla en Excel. El comienzo y el cierre de una tabla se agregarán en el código fuente de la wiki. Por ejemplo, crear hipervínculos sería algo así como A1 =[[
, B1 =nombre del artículo de destino, C1 = ]]
, D1 = = A1&B1&C1
.
Respuesta2
En última instancia, el mejor curso de acción sería ampliar la tab2wiki
herramienta con soporte para el manejo de enlaces (código fuenteaquí), especialmente dada la explosión de TLD genéricos en los últimos años. No hay nada mejor que escribir código específico para manejar el problema, que es más complejo de lo que puede manejar esta solución limitada (detallada a continuación).
Dicho esto, pude hackear algo con expresiones regulares y perl quepodríahaga lo que necesite, dependiendo de sus condiciones, al menos si tiene acceso a Linux o si puede adaptar este enfoque a un entorno diferente. Yo creobloc de notas++, disponible en Windows, admite expresiones regulares en su herramienta buscar y reemplazar, y es posible que pueda adaptar este enfoque para usar esa interfaz con la siguiente expresión regular (es decir, pegar la salida tab2wiki
en notepad++ y luego usar la expresión regular en su herramienta buscar y reemplazar ).
Primero, la entrada, que se proporciona a 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
Que, cuando se pega, tab2wiki
produce el siguiente texto:
{| 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
|}
Este ejemplo incluye celdas con múltiples enlaces, así como celdas finales que tienen enlaces al final, así como celdas vacías.
Al guardar este archivo en algún lugar, al estilo /tmp/testwikifile
, y luego ejecutar el siguiente comando con perl
el motor de expresiones regulares, recorre y pega [
cada ]
uno de los enlaces:
cat /tmp/testtable3 | perl -p -e 's/(http.*?)\.(com|org|net)/\[\1.\2\]/gm'
La salida:
{| 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]
|}
Limitaciones:
- Los enlaces deben comenzar con
http
al menos - Es necesario conocer la lista de dominios de nivel superior (TLD) para los enlaces.
Detalles de expresiones regulares:
Esta expresión regular, 's/(http.*?)\.(com|org|net)/\[\1.\2\]/g'
se puede desglosar de la siguiente manera:
- Realice una sustitución de una cadena de entrada con una nueva cadena a la
s/start/replacement/
y hágalo globalmenteg
(busque todas las coincidencias). - Busca
http
más cualquier otra cosa.*
y hazlo.perezosamente?
. Luego encuentre un período\.
, luego encuentre uno decom
,org
onet
vía(com|org|net)
. Esto establece dos grupos de captura que luego podemos usar en nuestra sustitución. - La sustitución es
\[\1.\2\]
,\1
siendo todo desdehttp
hasta el punto y\2
siendo uno decom
,org
onet
. Por lo tanto, "ponga un punto.
entre estas dos coincidencias para rehacer el vínculo y rellénelo con corchetes de apertura[
y cierre]
".