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 :

ValueError: invalid literal for int() with base 10: 'RM 2'


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Octobre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Octobre 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut ValueError: invalid literal for int() with base 10: 'RM 2'
    Bonsoir,
    Faisant une analyse statistique (sous 3.6.8) sur un fichier généalogique (texte) j'essaie de convertir des string en nombre via int().
    La commande type me renvoie que la conversion est bien faite en integer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for line in f:
            if 'DATE' in line:
                    b=int(line[-5:-1].strip())
                    #print(type(b))
                     listedate.append(b)
    Mais j'obtiens toujours le même message d'erreur:
    Traceback (most recent call last):
    File "/home/jacques/Documents/Programmes/geneweb/stats_basatabary.py", line 13, in <module>
    b=int(line[-5:-1].strip())
    ValueError: invalid literal for int() with base 10: 'RM 2'
    Quelqu'un a-t'il une idée?
    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Tu devrais trouver la réponse tout seul en ajoutant un simple print.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for line in f:
            if 'DATE' in line:
                print(line)

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Oui, afficher la ligne avec "print" est une bonne idée.

    Mais le message d'erreur çà vous dit déjà que "RM 2" n'est pas une suite de chiffre qu'on peut convertir en un entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> int('RM 2')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: 'RM 2'
    >>>
    Et ce 'RM 2' sont les 4 derniers caractères avant la fin de ligne récupérés par line[-5:-1].strip().

    Soit cette ligne du fichier est incorrecte, soit la longueur de l'entier en fin de ligne ne fait pas toujours 4 caractères (i.e. est de longueur variable).

    - W

  4. #4
    Futur Membre du Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Octobre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Octobre 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé. C'était bien le format de la ligne et la longueur du dernier nombre qui était en cause: une date du calendrier révolutionnaire non convertie:
    Il va falloir que je développe un peu plus!
    Merci à tous les 2 de votre aide!
    A+

Discussions similaires

  1. invalid literal for int() with base 10: ''
    Par Mini-minimoys dans le forum Général Python
    Réponses: 4
    Dernier message: 21/01/2016, 11h08
  2. [V8] ValueError: invalid literal for int() with base 10
    Par chagala dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/05/2015, 09h27
  3. test.py : ValueError: invalid literal for int()
    Par black-falco dans le forum Django
    Réponses: 2
    Dernier message: 05/08/2011, 12h11
  4. [Débutant] invalid literal for int() with base 10: '\r'
    Par oodini dans le forum Général Python
    Réponses: 19
    Dernier message: 23/03/2011, 15h25
  5. invalid literal for int() with base 10:
    Par EricStib dans le forum Général Python
    Réponses: 9
    Dernier message: 05/01/2009, 13h22

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