Bonjour :) ,
J’ai ma fonction qui analyse le message du client, et quand mon algorithme détecte le mot "commande" suivi d’un nombre de 1 à 20, ma fonction est censée me renvoyer les deux valeurs mais en retour, ma fonction me renvoie tout ce qui à 20 (exemple même la date 2020).
J’aimerais que ma fonction me renvoie le nombre entre 1 et 20 de la "commande".
Merci
def detect_question(text,subject):
questions = []
intentList = ["Default Fallback Intent"]
ai = apiai.ApiAI("--- Clef privée retirée par l'équipe du site ---")
########
def req(phrase):
request = ai.text_request()
request.lang = 'fr'
request.session_id = "RANDOM"
request.query = phrase
question = request.getresponse()
s = json.loads(question.read().decode('utf-8'))
try:
intentName = s["result"]["metadata"]["intentName"]
except:
intentName = "Default Fallback Intent"
return intentName
########
phrases = re.split("\.|!|\?",text)
for phrase in phrases:
# Tests if the phrase contain characters:
test = False
for letter in string.ascii_letters:
if letter in phrase:
test = True
if test == False:
text = text.replace(phrase,"")
continue # Go to next phrase
intentName = req(phrase)
if intentName not in intentList:
questions.append(intentName)
intentList.append(intentName)
l = len(questions)
if l == 0:
pattern1 = r"Commande #\d{1,20} confirmée"
pattern2 = r"Une commande #\d{1,20} est en transit"
patterns = [pattern1,pattern2]
default_subject = False
for pattern in patterns:
if re.search(pattern,subject):
default_subject = True
break
if not default_subject:
for letter in string.ascii_letters:
if letter in subject:
intentName = req(subject)
if intentName not in intentList:
questions.append(intentName)
l += 1
break
if l == 0:
questions = ["Default Fallback Intent","none"]
elif l == 1:
questions.append("none")
elif l == 3 and "thanks" in questions:
questions.remove("thanks")
elif l >= 3:
for i in range(l-2):
del questions[0]
return questions
# souci de regexp
Posté par guitou . Évalué à 5.
Ca ne matche pas les entiers de 1 à 20, mais une chaîne de caractères constituée de 1 à 20 chiffres ;)
++
Gi)
[^] # Re: souci de regexp
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
bien vu ; il voulait (en regexp) du
ou un truc du genre
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: souci de regexp
Posté par fearan . Évalué à 4.
J'ai presque la même ;)
([01]?\d)|20
Je préfère ma version, y a pas à se poser la question dur la priorité de l’opérateur ? sur |
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: souci de regexp
Posté par syntmk . Évalué à 1.
Merci :) ! Vos réponses m'ont été très utiles et ont permis de résoudre mon problème.
[^] # Re: souci de regexp
Posté par syntmk . Évalué à 0.
Merci :) ! Vos réponses m'ont été très utiles et ont permis de résoudre mon problème.
[^] # Re: souci de regexp
Posté par syntmk . Évalué à 0.
Merci :) ! Vos réponses m'ont été très utiles et ont permis de résoudre mon problème.
# nommage
Posté par _kaos_ . Évalué à 4. Dernière modification le 27 mars 2021 à 09:04.
Salut,
Dans la lignée de mon commentaire à ta question suivante,
l
pour un entier, c'est super pas pratique à comprendre.i
à la limite, oulist_length
par exemple rend le code beaucoup plus facile à comprendre, pour toi ou (surtout) les autres.Matricule 23415
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.