[python] poker problème avec les strings
AwwA
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
sebsauvage Messages postés 33284 Date d'inscription Statut Modérateur Dernière intervention -
sebsauvage Messages postés 33284 Date d'inscription Statut Modérateur Dernière intervention -
voila j'ai crée une fonction qui a pour but de suprimer les lettres dans une chaine .
mon but est de transformer cette chaine
['9s', '9d', '10h', '9c', '8h', '13s', '3d']
en
['9', '9', '10', '9', '8', '13', '3']
voila mon programme
mais il me donne
[None, None, None, None, None, None]
ce qui n'est pas tres pratique !
merci
mon but est de transformer cette chaine
['9s', '9d', '10h', '9c', '8h', '13s', '3d']
en
['9', '9', '10', '9', '8', '13', '3']
voila mon programme
def w(liste):
if liste.count('h')>0:
print liste.replace("h","",10)
if liste.count('s')>0:
print liste.replace("s","",10)
if liste.count('d')>0:
print liste.replace("d","",10)
if liste.count('c')>0:
print liste.replace("c","",10)
def z(liste):
wow=[]
i=0
while i<6:
wow=wow+[w(liste)]
i=i+1
return wow
mais il me donne
[None, None, None, None, None, None]
ce qui n'est pas tres pratique !
merci
Configuration: Mac OS X Safari 525.13
3 réponses
-
Ce ne sont pas des print qu'il te faut, ta fonction doit retourner la chaine et non pas l'afficher:
def w(liste): if liste.count('h')>0: liste= liste.replace("h","",10) if liste.count('s')>0: liste= liste.replace("s","",10) if liste.count('d')>0: liste= liste.replace("d","",10) if liste.count('c')>0: liste= liste.replace("c","",10) return liste -
Une solution plus pythonique
root@osiris ~/src $ cat cut.py #!/usr/bin/python def chop(aString) : return aString[0 : -1] # on suppose que aString n'est ni None ni vide avar = ['9s', '9d', '10h', '9c', '8h', '13s', '3d'] result = map(chop , avar) print result root@osiris ~/src $ python cut.py ['9', '9', '10', '9', '8', '13', '3']
Voir par exemple
http://docs.python.org/tut/node7.html#SECTION007130000000000000000 -
Si c'est pour garder uniquement les chiffres, peut aussi utiliser isdigit() qui indique si un caractère est un chiffre ou non:
#!/usr/bin/python def keepDigits(chaine): return ''.join([c for c in chaine if c.isdigit()]) avar = ['9s', '9d', '10h', '9c', '8h', '13s', '3d'] result = map(keepDigits , avar) print result