Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1509 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] TypeError sur une concaténation de chaines [Résolu]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python] TypeError sur une concaténation de chaines [Résolu]

n°791731
multani-1
Posté le 09-07-2004 à 16:10:36  profilanswer
 

Salut,
 
j'ai un script qui fait des concaténations de chaines, pour stocker un grand texte (un mail pour être plus précis).
 
La variable qui contient ce texte, s'appelle mailp, je l'affecte une première fois au début de la méthode qui génère le texte.
Ensuite, j'essaie de lui affecter la suite du texte que je veux envoyer, mais j'ai cette erreur là :

Citation :


Traceback (most recent call last):
  File "./xml2db.py", line 65, in ?
    mail.send()
  File "./alerteEmail.py", line 58, in send
    msg = MIMEText(m.getText())
  File "./genEmail.py", line 29, in getText
    return self.getAlerte()
  File "./genEmail.py", line 138, in getAlerte
    mailp = mailp + """
TypeError: unsubscriptable object


 
J'ai essayé d'autres manière de faire ça :
- mailp = mailp + "\n\ [...] " au lieu d'utiliser les """
- mailp2 = mailp + """ [...]
- mailp = """ [...]
- mailp2 = """ [...]
Bref, plusieurs moyens, mais je vois pas du tout d'où ça vient :/
Si je fais un print mailp avant de faire cette affectation, j'ai bien mon texte qui s'affiche, donc le debut du script marche bien.
 
Le pire, c'est que ça marche quand je fais des essais directement dans une console Python :o
 
Merci de m'aider :)


Message édité par multani-1 le 09-07-2004 à 16:53:18
mood
Publicité
Posté le 09-07-2004 à 16:10:36  profilanswer
 

n°791745
masklinn
í dag viðrar vel til loftárása
Posté le 09-07-2004 à 16:20:06  profilanswer
 

J'ai un peu de mal a piger ce qui se passe, faudrait ptet un peu plus de code
 
je vois pas du tout ce que tu tentes de faire (""" c'est un string vide suivi d'une apostrophe, essaie "\"" si tu veux ajouter une apostrophes a ton truc), et je ne sais meme pas de quelle maniere tu "affectes" mailp ni si tu fais des modifs préalables
 
donne plus de code stp

n°791746
lorill
Posté le 09-07-2004 à 16:21:51  profilanswer
 

t'es sur que mailp est une string ?

n°791751
multani-1
Posté le 09-07-2004 à 16:24:41  profilanswer
 

Hum, effectviement, c'est pas super clair :/
 
Bon, j'ai ça dans ma méthode :

Code :
  1. mailp = """<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
  2. <html>
  3.   <head>
  4.   <title>gnagnagna</title>
  5.   [... etc ...]"""
  6. for a in self.tabAnnonce:
  7.   sql = "[...]" % a
  8.   try:
  9.     self.connexion = MySQLdb.connect (hostname, username, password, atabase)
  10.     self.cursor = self.connexion.cursor ()
  11.   except MySQLdb.Error, e:
  12.     print "MySQL: error %d: %s" % (e.args[0], e.args[1])
  13.     self.error = self.error + 1
  14.   else:
  15.     res = self.cursor.execute(sql)
  16.     mailp = mailp + """
  17.       <li id="annonce">
  18.         <div id="minitature">
  19.           <a href='[... etc ...]"""


Bon, l'indentation chie, mais j'arrive pas à la mettre correctement, dans mon fichier c'est bon.
 
Si je suis sur que mailp est une chaine ? Ben, je l'affecte directement avec une chaine de caractère, je fais ma requête SQL, et je reaffecte mailp juste après, ya pas de raisons que ça change ... C'est une variable locale, je m'en sers juste dans cette méthode.


Message édité par multani-1 le 09-07-2004 à 16:29:00
n°791755
lorill
Posté le 09-07-2004 à 16:28:15  profilanswer
 

c'est pas normal...  
tu peux toujours faire mailp = "%s%s" % (mailp, """blabla""" ) mais t'as une erreur qui traine quelquepart, forcément.

n°791774
multani-1
Posté le 09-07-2004 à 16:36:25  profilanswer
 

lorill a écrit :

c'est pas normal...  
tu peux toujours faire mailp = "%s%s" % (mailp, """blabla""" ) mais t'as une erreur qui traine quelquepart, forcément.


 
Ca marche pas non plus :( J'ai la même erreur ...
 
Par contre, mon """blabla""" est sur plusieurs lignes (c'est pour ça que je me sers de """ d'ailleurs).
Si je fais comme toi, c'est à dire mailp = "%s%s" % (mailp, """blabla""" ), ou même mailp = mailp + """blabla""", là ça marche, mais j'ai la même erreur plus bas (mais ça c'est ce qui arrive quand on traite mal le résultat d'une reque SQL :o)


Message édité par multani-1 le 09-07-2004 à 16:36:45
n°791783
lorill
Posté le 09-07-2004 à 16:38:42  profilanswer
 

multani-1 a écrit :

là ça marche, mais j'ai la même erreur plus bas (mais ça c'est ce qui arrive quand on traite mal le résultat d'une reque SQL :o)


:??:  
j'ai pas compris

n°791791
multani-1
Posté le 09-07-2004 à 16:41:18  profilanswer
 

lorill a écrit :

:??:  
j'ai pas compris


 
Comme je t'ai dis (mailp = mailp + """blabla""" ), ça marche, mais je retrouve cette erreur sur les lignes de codes en dessous, où je traite ma requête SQL.
Mais j'ai fais n'importe quoi sur ce traitement SQL, c'ets normal que ça chiait.
Maintenant que c'est corrigé, le script marche, mais ça enregistre que "blabla" dans ma variable. Si je remets mon texte entre les """, ça refais l'erreur  :sweat:

n°791792
masklinn
í dag viðrar vel til loftárása
Posté le 09-07-2004 à 16:41:22  profilanswer
 

et en remplacant les """ """ par
""\
""\
"" ?
 
et tu devrais verifier le type de ton mailp avant tes affectations -_-

n°791810
multani-1
Posté le 09-07-2004 à 16:49:36  profilanswer
 

Masklinn a écrit :

et en remplacant les """ """ par
""\
""\
"" ?


J'ai essayé totu à l'heure déjà (cf. 1ère manière du 1er post ;) ), sans succès :/
 

Masklinn a écrit :

et tu devrais verifier le type de ton mailp avant tes affectations -_-


 
<type 'str'>
 
Faut bien faire print mailp.__class__ ?

mood
Publicité
Posté le 09-07-2004 à 16:49:36  profilanswer
 

n°791817
multani-1
Posté le 09-07-2004 à 16:53:04  profilanswer
 

Bon, c'est bon, j'ai trouvé d'où ça venait [:benou] :
problème du résultat de ma requête SQL que je traitais mal, et que je concatenais dans mailp ... sauf que la ligne était trop grande, et que cette concaténation était en dehors de la fenêtre [:benou]
 
Désolé du dérangement :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] TypeError sur une concaténation de chaines [Résolu]

 

Sujets relatifs
Interdire des requêtes dans un input...[RESOLU]Page d'attente pour moteur de recherche [résolu]
[Résolu] [Regex] reconnaitre une chaîne non complète - java[RESOLU] [javascript] superposition d'images
[Résolu] [Ecommerce] [Tomcat - config] [Libriaries jar] Servlet AtosIntToStr[resolu]
[PHP][Résolu] Probleme avec getdate() et le mois d'octobre ![Resolu] Est-il possible de récuperer la valeur d'un input désactivé ?
[MySQL] Pb de requete [Resolu]Grille (border="1") tableau en xhtml ? [Resolu]
Plus de sujets relatifs à : [Python] TypeError sur une concaténation de chaines [Résolu]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR