Script Python pour extraire les chaînes d'une source I7

Espace libre pour faire connaître vos dernières réalisations ou les événements concernant la communauté (concours, jeux individuels, etc.)

Modérateurs: Stormi, Otto Grimwald

Script Python pour extraire les chaînes d'une source I7

Messagepar Natrium le Ven Déc 30, 2016 4:06 am

En parallèle à ma FI du concours et comme je n'ai rien trouvé de semblable sur l'internet, j'ai écrit un petit script Python qui permet d'extraire toutes les chaînes d'une source I7. Cependant, elle ne se contente pas de les compiler dans un fichier texte, elle s'occupe aussi de remplacer les substitutions (par exemple, « [line break] » sera remplacé par un saut de ligne, et « [bracket] » par un crochet ouvrant).

Ça permet de passer son texte dans un correcteur orthographique, sans que celui-ci ne devienne fou avec ces crochets partout qui ne veulent rien dire.

Malheureusement, le code ne prend pas encore en compte les conditions et les « one of », entre autres choses. Mon plan est que pour chaque chaîne contenant ces structures, le script écrive plusieurs fois la chaîne, dans toutes les combinaisons possibles (quand la condition est vrai ou fausse ou pour chaque possibilité du « one of »).

J'imagine que la meilleure façon de faire ça est d'utiliser du regex pour simplifier la chaîne. Par exemple :

Code: Tout sélectionner
"Salut ! [if condition 1]Blabla[else if condition 2]Patati[else]Patata[end if]. Au revoir !"

deviendrait

Code: Tout sélectionner
"Salut ! [[Blabla|Patati|Patata]]. Au revoir !"

Après, il suffirait d'analyser la chaîne pour choisir un élément dans chaque ensemble entre double crochets.

À moins que quelqu'un a une meilleure idée ? [ÉDITION : En fait j'ai décidé de laisser tomber ; voir message ci-dessous.]


Mais bref, ça se nomme « I7extract.py » et c'est disponible ici [ÉDITION : mise à jour du lien] :
https://bitbucket.org/Natrium729/inform-7-text-extractor

Je ne suis pas un pro du Python, et il y a sûrement moyen de mieux optimiser le code, alors toute remarque est la bienvenue ! :)
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1079
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour extraire les chaînes d'une source I7

Messagepar Natrium le Ven Nov 16, 2018 3:11 am

Deux années passent…

Finalement, j'ai tout réécrit à partir de zéro afin de rendre le script plus modulable et de suivre de meilleures pratiques.

Il y a un dépôt dédié maintenant : https://bitbucket.org/Natrium729/inform ... -extractor

Parmi les nouveautés, on peut spécifier des options pour changer le comportement du script (nom du fichier de destination, séparateur entre les chaînes…) et on peut maintenant créer des substitutions personnalisées dans un fichier JSON.

J'ai laissé tomber la gestion des [if …] et des [one of], parce qu'en fait c'était trop compliqué à gérer et que l'idée de trouver toutes les combinaisons possibles menait vers de l'explosion combinatoire. (S'il y a 3 textes conditionnels dans une chaîne, chacun ayant 3 valeurs possibles, alors ça donne 27 textes possibles. L'utilisateur peut ainsi se retrouver avec des dizaines de textes similaires, sachant que pas tous peuvent véritablement arriver en jeu, car tout dépend des conditions.)
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1079
Inscription: Mar Oct 04, 2011 11:18 pm


Retourner vers Annonces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron