[python] poker problème avec les strings

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

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

  1. Modérateur
    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
    1. Modérateur
      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
      1. Merci beaucoup :)

        en effet le print c'est pas mega malin ...
    2. Modérateur
      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