Amélioration du traitement des contenus textuels avant export markdown
This commit is contained in:
parent
bb4bd79b6d
commit
88ec2461ea
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import docx2python
|
import docx2python
|
||||||
from ressourcedocx import *
|
from ressourcedocx import *
|
||||||
|
import tools
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -64,7 +65,7 @@ for i in range(2, len(docu)): # A priori un tableau
|
|||||||
champ = ligne[0][0] # le nom du champ
|
champ = ligne[0][0] # le nom du champ
|
||||||
i = get_indice_sans_accent_ni_espace(champ, ENTETES) # l'indice de l'entete dans ENTETES
|
i = get_indice_sans_accent_ni_espace(champ, ENTETES) # l'indice de l'entete dans ENTETES
|
||||||
if i != None:
|
if i != None:
|
||||||
data[i] = "\n".join(res[j][1])
|
data[i] = tools.caracteres_recalcitrants("\n".join(res[j][1]))
|
||||||
if champ == "Prérequis" and not data[i]:
|
if champ == "Prérequis" and not data[i]:
|
||||||
data[i] = "aucun"
|
data[i] = "aucun"
|
||||||
print(f"Dans {nom_ressource}, complète les prérequis à \"aucun\"")
|
print(f"Dans {nom_ressource}, complète les prérequis à \"aucun\"")
|
||||||
@ -76,7 +77,7 @@ for i in range(2, len(docu)): # A priori un tableau
|
|||||||
# j+1 = les ACs par compétences
|
# j+1 = les ACs par compétences
|
||||||
acs = res[j+2]
|
acs = res[j+2]
|
||||||
for k in range(len(acs)):
|
for k in range(len(acs)):
|
||||||
apprentissages[k] = "\n".join(acs[k]) # fusionne les ACS (généralement sur plusieurs lignes)
|
apprentissages[k] = tools.caracteres_recalcitrants("\n".join(acs[k])) # fusionne les ACS (généralement sur plusieurs lignes)
|
||||||
|
|
||||||
if non_interprete: # souvent Heures de formation (incluant les TP)
|
if non_interprete: # souvent Heures de formation (incluant les TP)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ for i in range(1, len(docu)): # A priori un tableau
|
|||||||
for j in range(len(res)): # parcours des entêtes du tableau décrivant la ressource
|
for j in range(len(res)): # parcours des entêtes du tableau décrivant la ressource
|
||||||
ligne = res[j]
|
ligne = res[j]
|
||||||
if len(ligne) == 2: # ligne de données classique champ => valeur
|
if len(ligne) == 2: # ligne de données classique champ => valeur
|
||||||
champ = ligne[0][0] # le nom du champ
|
champ = caracteres_recalcitrants(ligne[0][0]) # le nom du champ
|
||||||
if champ.startswith("Nom de la"):
|
if champ.startswith("Nom de la"):
|
||||||
champ = "Titre de la" # corrige les noms/titres
|
champ = "Titre de la" # corrige les noms/titres
|
||||||
i = get_indice_sans_accent_ni_espace(champ, ENTETES_CHAPEAU) # l'indice de l'entete dans ENTETES
|
i = get_indice_sans_accent_ni_espace(champ, ENTETES_CHAPEAU) # l'indice de l'entete dans ENTETES
|
||||||
@ -84,7 +84,7 @@ for i in range(1, len(docu)): # A priori un tableau
|
|||||||
# j+1 = les ACs par compétences
|
# j+1 = les ACs par compétences
|
||||||
acs = res[j+2]
|
acs = res[j+2]
|
||||||
for k in range(len(acs)):
|
for k in range(len(acs)):
|
||||||
apprentissages[k] = "\n".join(acs[k]) # fusionne les ACS (généralement sur plusieurs lignes)
|
apprentissages[k] = caracteres_recalcitrants("\n".join(acs[k])) # fusionne les ACS (généralement sur plusieurs lignes)
|
||||||
|
|
||||||
if non_interprete: # souvent Heures de formation (incluant les TP)
|
if non_interprete: # souvent Heures de formation (incluant les TP)
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ for i in range(1, len(docu)): # A priori un tableau
|
|||||||
for j in range(len(res)): # parcours des entêtes du tableau décrivant la ressource
|
for j in range(len(res)): # parcours des entêtes du tableau décrivant la ressource
|
||||||
ligne = res[j]
|
ligne = res[j]
|
||||||
if len(ligne) == 2: # ligne de données classique champ => valeur
|
if len(ligne) == 2: # ligne de données classique champ => valeur
|
||||||
champ = ligne[0][0] # le nom du champ
|
champ = caracteres_recalcitrants(ligne[0][0]) # le nom du champ
|
||||||
i = get_indice_sans_accent_ni_espace(champ, ENTETES_EXEMPLES) # l'indice de l'entete dans ENTETES
|
i = get_indice_sans_accent_ni_espace(champ, ENTETES_EXEMPLES) # l'indice de l'entete dans ENTETES
|
||||||
if i != None:
|
if i != None:
|
||||||
data[i] = "\n".join(res[j][1])
|
data[i] = "\n".join(res[j][1])
|
||||||
|
@ -5,7 +5,8 @@ import ruamel.yaml
|
|||||||
|
|
||||||
from modeles import get_modele, TemplateLatex
|
from modeles import get_modele, TemplateLatex
|
||||||
from officiel import DATA_ACS, get_officiel_sae_name_by_code, get_officiel_ressource_name_by_code
|
from officiel import DATA_ACS, get_officiel_sae_name_by_code, get_officiel_ressource_name_by_code
|
||||||
from ressourcedocx import caracteres_recalcitrants, remove_ligne_vide
|
from ressourcedocx import remove_ligne_vide
|
||||||
|
from tools import caracteres_recalcitrants
|
||||||
|
|
||||||
|
|
||||||
class Ressource():
|
class Ressource():
|
||||||
|
@ -5,6 +5,8 @@ from officiel import supprime_accent_espace, get_code_from_nom_using_dict
|
|||||||
import ruamel.yaml
|
import ruamel.yaml
|
||||||
from ruamel.yaml.scalarstring import FoldedScalarString as folded
|
from ruamel.yaml.scalarstring import FoldedScalarString as folded
|
||||||
|
|
||||||
|
from tools import caracteres_recalcitrants
|
||||||
|
|
||||||
__LOGGER = logging.getLogger(__name__)
|
__LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -51,9 +53,9 @@ class RessourceDocx():
|
|||||||
"acs": self.apprentissages,
|
"acs": self.apprentissages,
|
||||||
"sae": self.sae,
|
"sae": self.sae,
|
||||||
"prerequis": self.prerequis,
|
"prerequis": self.prerequis,
|
||||||
"contexte": folded(caracteres_recalcitrants(self.contexte)),
|
"contexte": folded(self.contexte),
|
||||||
"contenu": folded(caracteres_recalcitrants(self.contenu)),
|
"contenu": folded(self.contenu),
|
||||||
"motscles": caracteres_recalcitrants(self.mots) if self.mots else ""
|
"motscles": self.mots if self.mots else ""
|
||||||
}
|
}
|
||||||
# output = yaml.dump(dico, #Dumper=yaml.Dumper,
|
# output = yaml.dump(dico, #Dumper=yaml.Dumper,
|
||||||
# sort_keys=False, allow_unicode=True)
|
# sort_keys=False, allow_unicode=True)
|
||||||
@ -334,17 +336,18 @@ def get_marqueur_numerique(contenu):
|
|||||||
return m
|
return m
|
||||||
|
|
||||||
def get_marqueurs(contenus):
|
def get_marqueurs(contenus):
|
||||||
"""Renvoie la liste des marqueurs (à 1 caractère) partant d'une liste de ligne"""
|
"""Renvoie la liste des marqueurs (à 1 caractère) partant d'une liste de lignes (éventuellement vide)"""
|
||||||
marqueurs = []
|
marqueurs = []
|
||||||
for ligne in contenus:
|
for ligne in contenus:
|
||||||
m = re.search(r"(\t)*", ligne) # des \t ?
|
m = re.search(r"(\t)*", ligne) # y a-t-il des tabulations ?
|
||||||
if m.group() != "":
|
if m.group() != "":
|
||||||
ajout = m.group()
|
ajout = m.group()
|
||||||
else:
|
else:
|
||||||
ajout = ""
|
ajout = ""
|
||||||
ligne = ligne.replace("\t","")[0].rstrip() # le marqueur en début de ligne (si 1 caractère)
|
ligne = ligne.replace("\t","").rstrip()
|
||||||
if ligne[0] not in string.ascii_letters and ligne[0] != "É" and ligne[0] != "/":
|
if ligne: # si la ligne n'est pas vide, cherche le marqueur en début de ligne (si 1 caractère)
|
||||||
marqueurs += [ajout + ligne[0]] # tous les symboles
|
if ligne[0] not in string.ascii_letters and ligne[0] != "É" and ligne[0] != "/":
|
||||||
|
marqueurs += [ajout + ligne[0]] # tous les symboles
|
||||||
|
|
||||||
marqueurs_finaux = [] # tri les marqueurs en supprimant les doublons et en gardant un ordre (pour détecter les sous listes)
|
marqueurs_finaux = [] # tri les marqueurs en supprimant les doublons et en gardant un ordre (pour détecter les sous listes)
|
||||||
for m in marqueurs:
|
for m in marqueurs:
|
||||||
@ -358,19 +361,22 @@ def get_marqueur(ligne, marqueurs):
|
|||||||
if ligne.startswith(m):
|
if ligne.startswith(m):
|
||||||
return m
|
return m
|
||||||
|
|
||||||
def nettoie_contenus(r):
|
|
||||||
# suppression des \t
|
|
||||||
contenu = r.contenu.replace(" / ", "/") # supprime les nbsp
|
|
||||||
|
|
||||||
if r.code == "R113":
|
|
||||||
print("ici")
|
|
||||||
|
|
||||||
|
def remplace_marqueur_numerique_with_caracteres(contenu):
|
||||||
|
"""Remplace les marqueurs numériques par des marqueurs > lorsque présents dans un contenu"""
|
||||||
marqueurs_numeriques = get_marqueur_numerique(contenu)
|
marqueurs_numeriques = get_marqueur_numerique(contenu)
|
||||||
for m in marqueurs_numeriques: # remplace les marqueurs numériques
|
for m in marqueurs_numeriques: # remplace les marqueurs numériques
|
||||||
contenu = contenu.replace(m, ">")
|
contenu = contenu.replace(m, ">")
|
||||||
|
return contenu
|
||||||
|
|
||||||
|
def nettoie_contenus(r):
|
||||||
|
# suppression des \t
|
||||||
|
contenu = r.contenu.replace(" / ", "/")
|
||||||
|
|
||||||
|
contenu = remplace_marqueur_numerique_with_caracteres(contenu)
|
||||||
|
|
||||||
contenus = [ligne.rstrip() for ligne in contenu.split("\n")] # les contenus
|
contenus = [ligne.rstrip() for ligne in contenu.split("\n")] # les contenus
|
||||||
contenus = remove_ligne_vide(contenus) # supprime les lignes vides
|
# contenus = remove_ligne_vide(contenus) # supprime les lignes vides
|
||||||
|
|
||||||
marqueurs_finaux = get_marqueurs(contenus)
|
marqueurs_finaux = get_marqueurs(contenus)
|
||||||
|
|
||||||
@ -388,13 +394,6 @@ def nettoie_contenus(r):
|
|||||||
r.contenu = contenu
|
r.contenu = contenu
|
||||||
|
|
||||||
|
|
||||||
def caracteres_recalcitrants(contenu):
|
|
||||||
contenu = contenu.replace("è", "è").replace("’", "'").replace("é", "é")
|
|
||||||
contenu = contenu.replace("â", "â").replace(b'a\xcc\x82'.decode("utf8"), "â")
|
|
||||||
contenu = contenu.replace('\xa0', ' ') # le nbsp
|
|
||||||
return contenu
|
|
||||||
|
|
||||||
|
|
||||||
class SAEDocx():
|
class SAEDocx():
|
||||||
|
|
||||||
def __init__(self, nom, brut):
|
def __init__(self, nom, brut):
|
||||||
|
@ -16,4 +16,11 @@ def get_indice_sans_accent_ni_espace(champ, entetes):
|
|||||||
entete_purge = supprime_accent_espace(entete).rstrip()
|
entete_purge = supprime_accent_espace(entete).rstrip()
|
||||||
if entete_purge in champ_purge:
|
if entete_purge in champ_purge:
|
||||||
return i
|
return i
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def caracteres_recalcitrants(contenu):
|
||||||
|
contenu = contenu.replace("è", "è").replace("’", "'").replace("é", "é")
|
||||||
|
contenu = contenu.replace("â", "â").replace(b'a\xcc\x82'.decode("utf8"), "â")
|
||||||
|
contenu = contenu.replace('\xa0', ' ') # le nbsp
|
||||||
|
return contenu
|
Loading…
Reference in New Issue
Block a user