IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème de string en paramètres dans une fonction


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut Problème de string en paramètres dans une fonction
    Bonjour tout le monde,

    je suis novice en programmation python, et j'ai créé une fonction avec un paramètre line mais lorsque je veux exécuter ma fonction et mettre mon string dans mon paramètre, une partie du string n'est pas prise en compte.
    J'ai essayé de chercher sur internet avant mais je n'ai pas trouvé, je devais pas utiliser les bons mots-clés.

    Merci à vous !
    Nom : Capture d’écran 2022-11-16 110521.png
Affichages : 227
Taille : 8,5 Ko

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Sinax Voir le message
    mais lorsque je veux exécuter ma fonction et mettre mon string dans mon paramètre, une partie du string n'est pas prise en compte.
    Et il ne te vient pas à l'idée de nous montrer le code de la fonction ???
    Et pas en image, en code (cf les règles)

    Sinon au vu de l'image, mettre des guillemets simples et doubles dans une string (laquelle utilise justement les guillemets comme séparateur) ça aide pas Python à s'y retrouver
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    vu que tu as commencé la chaine avec des guillemets doubles, la chaine va s'arrêter aux prochains guillemets doubles; si tu veux en insérer, il faut les échapper par des \
    exemple "je m'appelle \"Zorro\" et je porte un masque" passe en entier

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par umfred Voir le message
    la chaine va s'arrêter aux prochains guillemets doubles
    J'y ai pensé mais je n'arrive pas à reproduire. fct("Hello "aaa"") produit un SyntaxError...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Je vous avoue que non, je croyais plus que ca venait du faite que le string avait plusieurs " donc il fallait que je l'insère d'une autre manière. Et donc désolé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    from lines_from_file import lines_from_file
     
     
    def get_message(line):
        """
        Pre : line est une ligne de log bien formée (str)
        Post : Retourne le message de la ligne
         !!! le message peut être composé de sous messages (séparés pas d’autres « : »),
         dans ce cas, il faut tout
        """
        message = line.split(":")
     
     
        if len(message) == 4:
            message1 =message[3]
            complete_mess1 = ' '.join(message1)
            print(complete_mess1)
     
        else:
            leng = len(message)
            message2 = message[3:leng +1]
            complete_mess2 = ' '.join(message2)
            print(complete_mess2)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Je pense que le "pas pris en compte" concerne la coloration syntaxique (d'où la présence de la capture) (l'exécution de l'instruction aurait généré l'erreur de syntaxe et la personne aurait alors (probablement) demandée l'origine de l'erreur (je me fais un peu mentaliste^^)

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Citation Envoyé par umfred Voir le message
    Je pense que le "pas pris en compte" concerne la coloration syntaxique (d'où la présence de la capture) (l'exécution de l'instruction aurait généré l'erreur de syntaxe et la personne aurait alors (probablement) demandée l'origine de l'erreur (je me fais un peu mentaliste^^)
    Mais quand je l'exécute, il y a bien une erreur : "SyntaxError: expression cannot contain assignment, perhaps you meant "=="?" :/

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Sinax Voir le message
    donc il fallait que je l'insère d'une autre manière.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def get_message(line):
    	print(line)
     
    get_message("Hello '123' \"abc\" def")
    get_message('Hello "123" \'abc\' def')

    Citation Envoyé par Sinax Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    message = line.split(":")
    if len(message) == 4:
    	message1 =message[3]
    	complete_mess1 = ' '.join(message1)
    	print(complete_mess1)
    else:
    	leng = len(message)
    	message2 = message[3:leng +1]
    	complete_mess2 = ' '.join(message2)
    	print(complete_mess2)
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    message = line.split(":")
    complete_mess = ' '.join(message[3:])
    print(complete_mess)

    Citation Envoyé par Sinax Voir le message
    Citation Envoyé par Sinax Voir le message
    mais lorsque je veux exécuter ma fonction et mettre mon string dans mon paramètre, une partie du string n'est pas prise en compte.
    Mais quand je l'exécute, il y a bien une erreur : "SyntaxError: expression cannot contain assignment, perhaps you meant "=="?" :/
    Ce n'est pas ce que as dit au début. Au début tu dis "une partie de la string n'est pas prise en compte", ce qui sous-entend que la fonction s'exécute, même si le résultat produit n'est pas conforme.
    Là tu dis maintenant qu'elle ne s'exécute pas !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Citation Envoyé par Sinax Voir le message
    Mais quand je l'exécute, il y a bien une erreur : "SyntaxError: expression cannot contain assignment, perhaps you meant "=="?" :/
    c'est bien qu'est-ce que j'ai dit !! il faut échapper les guillemets doubles présents dans la chaine (à la fin) avec un \ devant comme on te l'a indiqué

    sinon aussi dans le code la fonction, le contraire de len(message)==4 ça ne veut pas dire supérieure à 4 donc dans le else, si il y a moins de 4 éléments, ça va planter (message[3] ne sera pas accessible si il n'y a pas de sous-chaine (donc 1 seule chaine) ou 2 ou 3 )

    c'est bizarre aussi de vouloir espacer les caractères d'une chaine par un espace ^^
    ' '.join("tati") => 't a t i'

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ce n'est pas ce que as dit au début. Au début tu dis "une partie de la string n'est pas prise en compte", ce qui sous-entend que la fonction s'exécute, même si le résultat produit n'est pas conforme.
    Là tu dis maintenant qu'elle ne s'exécute pas !!!
    Je crois que j'ai bien "mentalismé"

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Merci pour le code et sur l'erreur que j'ai commise !

    il faut échapper les guillemets doubles présents dans la chaine (à la fin) avec un \ devant comme on te l'a indiqué
    Donc je dois appeler la fonction comme cela : get_message(\"Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.14' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")\")

    ou je dois ajouter \ devant chaque " ?

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Ce n'est pas ce que as dit au début. Au début tu dis "une partie de la string n'est pas prise en compte", ce qui sous-entend que la fonction s'exécute, même si le résultat produit n'est pas conforme.
    Là tu dis maintenant qu'elle ne s'exécute pas !!!
    Oui effectivement, je m'excuse encore, je me suis mal exprimé et donc pour clarifier les choses, la fonction ne fonctionne pas du tout (message d'erreur)

    Avec une ligne comme celle-ci tout va bien car il y a pas de guillement : get_message("Oct 25 02:34:30 kali systemd[705]: Listening on GnuPG cryptographic agent and passphrase cache.")

    mais avec la ligne : get_message("Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.14' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")")

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Sinax Voir le message
    mais avec la ligne : get_message("Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.14' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")")
    Remontons plus en amont: d'où vient cette ligne? Comment tu la récupères avant de l'envoyer à ta fonction?
    Parce que si tu la récupères via Python, alors les guillemets de la ligne sont déjà protégés lors de la récupération et quand tu la passes à ta fonction, il n'y a aucun souci.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Ok ca va, je vais tout expliquer alors c'est un petit projet et là, c'est la première partie. Mon prof m'a donné un fichier log.txt et une fonction qui va avec car on a pas encore le niveau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def lines_from_file(path):
    """ Pre : path (str) est le chemin menant au fichier à lire
    (à partir du dossier courant)
    Post : Retourne une liste où chaque élément est une ligne du fichier.
     En cas d'erreur, retourne une liste vide
    """
    try :
    with open(path) as file:
    log = file.readlines()
    return log
    except Exception as e :
    print(e)
    return [
    cette fonction récupère les lignes écrites du document log.
    Moi, je dois créer 5 fonctions, dont get_message et en paramètres, je dois mettre une ligne de caractère qui provient de mon fichier log (juste en copiant/collant)
    Et donc le but de la fonction, c'est de récupérer le message explicatif. Par exemple (Oct 25 02:34:32 kali dbus-daemon[758]: [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'), la fonction doit me retourner : [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon', ceci
    Voila j'espère que c'est plus clair pour vous !

  15. #15
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Avec ton interpréteur, quelques essais à faire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    s = "Oct 25 02:34:32 kali dbus-daemon[758]: [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'"
     
    s.split(':')
    Out[2]: 
    ['Oct 25 02',
     '34',
     '32 kali dbus-daemon[758]',
     " [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'"]
     
    s.split(':')[-1]
    Out[3]: " [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'"
     
    s.split(':')[-1].strip()
    Out[4]: "[session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'"

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Sinax Voir le message
    Mon prof m'a donné un fichier log.txt et une fonction qui va avec car on a pas encore le niveau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def lines_from_file(path):
    try :
    	with open(path) as file: log = file.readlines()
    	return log
    except Exception as e :
    	print(e)
    	return []
    Ok, jusque là pas de souci: ta fonction retourne bêtement une liste contenant les lignes du fichier.

    Citation Envoyé par Sinax Voir le message
    Moi, je dois créer 5 fonctions, dont get_message et en paramètres, je dois mettre une ligne de caractère qui provient de mon fichier log (juste en copiant/collant)
    Hé ben non, pas en copiant/collant. En copiant/collant ça ne fonctionnera jamais. Parce que Python, quand il récupère les lignes (qui sont des strings), s'occupe de protéger les quotes quand c'est nécessaire. Donc si tu passes les lignes récupérées à ta fonction, ça fonctionnera. Mais si tu lui passes des lignes de ton cru (copiées/collées) ça ne fonctionnera pas car les lignes ne sont pas protégées.

    Citation Envoyé par Sinax Voir le message
    Et donc le but de la fonction, c'est de récupérer le message explicatif. Par exemple (Oct 25 02:34:32 kali dbus-daemon[758]: [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon'), la fonction doit me retourner : [session uid=131 pid=758] Successfully activated service 'org.gtk.vfs.Daemon', ceci
    Voila j'espère que c'est plus clair pour vous !
    Oui ben quand on fait confiance à Python et qu'on le laisse faire, ça fonctionne nickel

    Exemple de fichier "fic"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    aaa'bbb"ccc
    ddd'eee"fff
    ggg'hhh"iii
    Code de traitement
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def lines_from_file(path):
    	try :
    		with open(path, "r") as fp: return fp.readlines()
    	except Exception as e:
    		print(e)
    		return []
     
    def get_message(line):
    	line=line.strip()		# Pour enlever le '\n' qui termine chaque ligne du fichier
    	print("Message reçu [%s] (%d)" % (line, len(line)))
     
    lignes=lines_from_file("fic")
    print(lignes)
    print()
    for l in lignes:
    	get_message(l)

    Et au résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ['aaa\'bbb"ccc\n', 'ddd\'eee"fff\n', 'ggg\'hhh"iii\n']
     
    Message reçu [aaa'bbb"ccc] (11)
    Message reçu [ddd'eee"fff] (11)
    Message reçu [ggg'hhh"iii] (11)
    Voilà. Quand on laisse Python gérer, il gère.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par Sinax Voir le message
    (juste en copiant/collant)
    Il ne faut pas copier/coller les lignes lues dans le fichier mais les récupérer via la liste de chaines de caractères (les lignes) retournée par lines_from_file (comme son nom l'indique).
    J'espère que vous savez écrire une boucle pour parcourir ces lignes et les passer une après l'autre en paramètre de la fonction get_message.
    note: dans un premier temps, faire que get_message se contente de retourner la chaine reçue en argument permettrait de "séparer" les problèmes dus à la fonction du reste.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Citation Envoyé par Sinax Voir le message
    Merci pour le code et sur l'erreur que j'ai commise !


    Donc je dois appeler la fonction comme cela : get_message(\"Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.14' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")\")

    ou je dois ajouter \ devant chaque " ?
    Pour revenir sur ce point-là, non, les guillemets qui sont dans la chaine, pas ceux qui la délimite (on a pourtant donné des exemples plus haut)

    si guillemets doubles pour délimiter la chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get_message("Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.14' (uid=131 pid=748 comm=\"/usr/bin/pulseaudio --daemonize=no \")")
    ou si guillemets simple pour délimiter la chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get_message('Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name=\'org.freedesktop.RealtimeKit1\' unit=\'rtkit-daemon.service\' requested by \':1.14\' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")')
    Pour ta fonction, il faut afficher le message à partir du 4ème élément de la chaine séparé selon les ":"; ça se fait assez facilement avec du slicing, ou encore avec l'utilisation du second paramètre que peut prendre la fonction split()
    Le -1 montré renvoi le dernier élément de la liste, c'est bien quand tu n'as pas d'autres blocs de message derrière (au cas où)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>s='Oct 25 02:34:31 kali dbus-daemon[425]: [system] Activating via systemd: service name=\'org.freedesktop.RealtimeKit1\' unit=\'rtkit-daemon.service\' requested by \':1.14\' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")'
    >>t1=s.split(':)
    >>msg1=':'.join(t1[3:])
    >>print(msg1)
    ' [system] Activating via systemd: service name=\'org.freedesktop.RealtimeKit1\' unit=\'rtkit-daemon.service\' requested by \':1.14\' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")'
    >>t2=s.plit(':',3)
    >>msg2=t2[-1]
    >>print(msg2)
    ' [system] Activating via systemd: service name=\'org.freedesktop.RealtimeKit1\' unit=\'rtkit-daemon.service\' requested by \':1.14\' (uid=131 pid=748 comm="/usr/bin/pulseaudio --daemonize=no ")'
    >>t1==t2 #pour vérifier que ce sont les 2 memes chaines
    True

  19. #19
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 9
    Par défaut
    Bonsoir à tous, et merci pour vos remarques, j'ai travaillé dessus et tout est good selon mon prof

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'une valeur de paramètre dans une fonction récursive
    Par xavier-Pierre dans le forum Général Python
    Réponses: 7
    Dernier message: 05/01/2017, 12h36
  2. Réponses: 5
    Dernier message: 29/04/2010, 16h08
  3. problème de paramètres dans une fonction
    Par morgan54 dans le forum VBA Access
    Réponses: 5
    Dernier message: 12/05/2008, 16h53
  4. [PL/SQL] Multi paramètre dans une fonction
    Par wiLL_ dans le forum Oracle
    Réponses: 2
    Dernier message: 28/02/2006, 17h31
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo