0
votes

Comment gérer ces entrées de liste?

Je prends une telle entrée de l'utilisateur -

 Entrez la description de l'image ici

Puis j'essaie de la diviser en utilisant la virgule et de l'ajouter dans une liste sous forme de nombre.

Mais chaque fois que je le fais, cela donne une erreur et les seuls magasins "20, 340,2".

remarquez comment le dernier numéro de la première ligne est de 223, cependant, ma liste ne stocke que 2 et ignore le 23 à la fin, même si j'ai utilisé des virgules pour séparer les éléments. Même pour 789 aussi (ligne suivante). Il s'arrête à 78 ans et ignore le 9 ci-dessous, bien que ce soit le même nombre Quelqu'un peut-il m'aider s'il vous plaît prendre des entrées de ce type et séparer correctement chaque élément en utilisant des virgules et la stocker dans une liste comme des chiffres? Merci.


6 commentaires

Toujours mettre le message d'erreur complet (commençant par Word "Traceback") en question (pas de commentaire) comme texte (pas capture d'écran). Il y a d'autres informations utiles.


Pouvez-vous ajouter le code que vous utilisez aussi. Vous avez un espace entre 2 et 23. Lequel est le plus probable pourquoi vous obtenez une erreur lors de la division de la liste.


problème est qu'il y a des espaces entre les nombres. Vous devriez être divisé par virgule et par l'espace pour l'obtenir.


Si le nombre est censé être 223 plutôt que deux numéros distincts 2 et 23, vous devez éliminer les espaces, non divisés.


Désolé, j'ai attaché une image du type d'entrée que je veux. Il donne une erreur juste après avoir rencontré la ligne suivante après 2.


Eh bien, c'est une erreur de syntaxe, car vous ne pouvez pas écrire un littéral à chaîne unique sur plusieurs lignes comme celle-là. Si votre code est en train de passer cela et de stocker quoi que ce soit dans une liste, il y a quelque chose que vous ne nous affichez pas, car ce programme devrait échouer avant qu'il y ait l'occasion de se diviser sur des virgules.


3 Réponses :


2
votes

Si vous voulez vraiment autoriser des chiffres avec des espaces en eux, vous pouvez commencer par retirer simplement tous les espaces de la chaîne:

>>> s = '120,340,2 23,456,678,78 9,456'
>>> s.replace(' ', '')
'120,340,223,456,678,789,456'


1 commentaires

Ajout d'une image du type d'entrée que je veux.



2
votes

Comme ça? XXX


0 commentaires

1
votes

Si en fait, cela provient d'un fichier d'entrée que vous avez lu, il ressemblerait à:

input = '120,340,2\n        23,456,678,78\n       9,456'
input = input.replace(" ","")
input = input.replace("\n","")


0 commentaires