-2
votes

Notation scientifique aux entiers

J'ai un fichier dans lequel les valeurs sont en notation scientifique 3.198304894802781462E + 00. Je veux les convertir en entiers. J'ai essayé ceci: xxx

erreur: xxx


3 commentaires

Vous avez juste besoin d'omettre les 4 dernières lettres (E + 01)?


Vous devez diviser sur , , pas blouses.


Êtes-vous vraiment sûr de vouloir des entiers de ce jeu de données? La notation scientifique peut ne pas être le seul problème que vous pourriez avoir avec cela. Vous jetez un tas de chiffres. Votre premier numéro, 1.874475383557408747e + 01 est en notation non scientifique, 18.74475383557408747 . Êtes-vous sûr que tous ces chiffres après la décimale ne sont pas significatifs?


3 Réponses :


1
votes

Vous pouvez utiliser le gestionnaire de contexte à lire à partir de votre fichier: xxx pré>

si vous souhaitez ajouter la liste de données à votre fichier: p>

with open('data.txt', 'a') as fp:
    fp.write(",".join(str(e) for e in data))


4 commentaires

Vous souhaitez ajouter dans le fichier la liste data ?


@tallarsat essayer maintenant


Son SyntaxError: EOF inattendu lors de l'analyse


@tallarsat, j'ai juste oublié de fermer la dernière parenthèse, essayez maintenant



0
votes

Essayez quelque chose comme ça. Vous devez diviser la chaîne puis appliquer la fonction de flotteur sur chaque élément: xxx pré>

ou simplement: p> xxx pré>

J'ai supposé que vous avez Vos données en tant que chaîne, mais de votre exemple, cela devrait fonctionner: P>

data = [int(float(number))
            for line in open('data.txt', 'r')
                for number in line.split(',')]


0 commentaires

1
votes

Jugement par votre message d'erreur, vos numéros sont délimités par , code>, pas blancheur. Vous devez donc utiliser line.split (',') code> à la place.

with open('data.txt', 'r') as in_stream:
    data = [
        int(float(number))
        for line in in_stream
        for number in line.split(',')
    ]


0 commentaires