Replace dans un tuple

Replace dans un tuple - Python - Programmation

Marsh Posté le 07-11-2014 à 17:17:32    

Bonjour à vous,
 
Je débute en python ^^
 
et j'aurais besoin de faire un replace dans un tuple.
 
déjà, est-ce possible?
 
si oui, une solution?
 
car j'ai essayé de passer par une variable intermédiaire mais sans succès, pareil, faire le replace comme suit:
 
variable.replace ("id", "id1" ) mais j'ai le message d'erreur suivant:
 

Code :
  1. Traceback (most recent call last):
  2.   File "extract_certif.py", line 37, in <module>
  3.     CERT_MR2.replace('\\n', '\n')
  4. AttributeError: 'tuple' object has no attribute 'replace'


 
j'en conclus donc que ce n'est pas possible.
 
Merci

Reply

Marsh Posté le 07-11-2014 à 17:17:32   

Reply

Marsh Posté le 07-11-2014 à 19:37:16    

Un tuple c'est readonly, une fois instancié tu peux plus y toucher.
 
Donc déjà il faut partir sur une liste.
 
Ensuite il existe pas de méthode replace aux lists, par contre c'est pas très compliqué à coder.
 
Exemple:

Code :
  1. def list_replace(init_list, old_value, new_value)
  2.     return [new_value if val == old_value else val for val in init_list]

Reply

Marsh Posté le 08-11-2014 à 09:26:29    

As tu essayé de faire :
 

Code :
  1. t = ('1', '2', '3', '4')
  2. ls = list(t)
  3. ls[0]='4'
  4. t = tuple(ls)


 
Mais je suis d'accord avec rage, si tu as besoin de modifier un tuple -> ca ne devrait pas être un tuple


Message édité par Profil supprimé le 08-11-2014 à 10:57:41
Reply

Marsh Posté le 11-11-2014 à 11:41:58    

Bonjour,
 
Merci pour vos réponses :jap:
 
en fait, je fais un extract de certificats depuis une base sql. Le certificat extrait je le stock dans une variable, mais quand je veux l'utiliser ou l'afficher et bien il n'interprête pas les \n du coup pas de sauts de lignes, donc mon certificat n'est pas valable.
 
après je ne cherche pas volontairement à le coller dans un tuple, je fais comme ca:
 
var1 = (requête sql)
 
cursor.execute = (var1)
 
var2 = cursor.fetchall()
 
et ca me sort le certificat mais dans un tuple.
 
mauvaise technique pour l'extract?

Reply

Marsh Posté le 11-11-2014 à 12:40:47    

C'est quoi ton connecteur db ?
 
Au pire si il te retourne un tuple (mais normalement il devrait te retourner un objet propre a lui, compatible avec les list) iil suffit de caster en list
 
var2 = list(cursor.fetchall())

Reply

Marsh Posté le 11-11-2014 à 22:38:35    

je fais:
 
import MySQLdb
 
cursor = db.cursor()
 
du coup, si je fais ta technique, ca extract mon tuple dans une liste qui est dans var2?

Reply

Marsh Posté le 11-11-2014 à 23:01:01    

Effectivement c'est bien un tuple que retourne ce connecteur.
http://mysql-python.sourceforge.ne [...] or-objects
 
Donc tu peux faire ce que j'ai dis.
Par contre attention le fetchall() j'imagine que ca retourne un tuple de tuple.
 

Reply

Marsh Posté le 12-11-2014 à 10:21:36    

Finalement, vu que c'est un tuple de tuple je fais juste ca:
 
var3 = var2[0][0].replace('bla', 'blo')  
 
et ca fontionne :D
 
merci à vous :jap:

Reply

Marsh Posté le 12-11-2014 à 10:24:29    

Ca sous entend que tu n'as qu'une réponse possible a ta requête. Si ta requête renvoie plusieurs row, tu prends que la 1er la.

Reply

Marsh Posté le 12-11-2014 à 15:09:59    

oui, et cela me va bien ^^

Reply

Marsh Posté le 12-11-2014 à 15:09:59   

Reply

Marsh Posté le 12-11-2014 à 18:03:19    

parfait ;) (du coup tu pourrais faire un fetchone au lieu du fetchall)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed