Code source de NaoCreator.SGBDDialogue.creer
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
"""
__author__ = 'no-code-team'
from random import randint
import re
import codecs
Confirmation = "Confirmation"
Demande = "Demande"
Humour = "Humour"
Instruction = "Instruction"
MotsUtiles = "Mots Utiles"
Reponse = "Reponse"
DicoVide = {}
def _remplace(balise, ligne):
"""
Fonction qui remplace les balises par les valeurs souhaitées
:param balise: dictionnaire contenant les valeurs à mettre dans les balises
:param ligne: string qui contient des balises
:return: la ligne donnée avec les valeurs dans les balises
"""
tab_ligne = re.split("<|>", ligne)
for i in range(len(tab_ligne)):
tab_ligne[i] = tab_ligne[i].strip() # on enlève les espaces
try:
val_balise = balise[tab_ligne[i]] # on récupère les valeurs du dico
except Exception as e:
print(e)
else:
tab_ligne[i] = str(val_balise)
return ' '.join(tab_ligne)
def _get_phrase(type_phrase, num_phrase):
"""
Fonction qui récupère les phrase demandées et donne un tableau de celles-ci
:param type_phrase: type de phrases à chercher
:param num_phrase: tableau des phrases à chercher dans le fichier
:return: le tableau des phrases trouvées
"""
f = codecs.open("NaoCreator/SGBDDialogue/fichiers/{}".format(type_phrase), 'r', 'utf-8')
tab_result = []
# Num ligne, ligne du fichier en str
for line in f: # on parcourt notre fichier
id_phrase = int(line.split(']')[0]) # on recupère le numéro de la ligne dans le fichier
if id_phrase in num_phrase: # on compare aux numéros voulus
tab_result.append(line) # on récupère la ligne
f.close()
return tab_result
[docs]class Creer(object):
def __init__(self, type_phrase, balise, *num_phrase):
"""
Cette classe va permettre de récupérer un choix de phrase et renvoyer une phrase au hasard parmi celles
demandées
:param type_phrase: type_phrase de phrase à récupérer
:param balise: Valeur des balises à changer sous la forme d'un dico
:param num_phrase: tableau des numéros de phrase à trouver
:return: None
"""
self.tab_phrase = _get_phrase(type_phrase, sorted(num_phrase))
self.balise = balise
[docs] def out(self):
"""
Fonction qui renvoie une phrase aléatoirement parmis celles choisies
:return:Une phrase choisie aléatoirement parmis les phrases choisies
"""
i = randint(0, len(self.tab_phrase)-1)
phrase = self.tab_phrase[i]
phrase = phrase.split(']')[1]
if '>' in phrase:
phrase = _remplace(self.balise, phrase)
phrase.replace("\n", "")
return phrase
[docs] def set_balise(self, balise):
"""
Fonction qui modifie l'attribut balise et remplace les balises par leurs valeurs
:param balise: attribut en question
:return:
"""
self.balise = balise