A voir également:
- Csv sous python
- Citizen code python - Guide
- Lancer script python linux - Forum Ubuntu
- Compris entre python ✓ - Forum Python
- Ce programme est écrit en python ✓ - Forum Python
- Ce programme est écrit en python. ✓ - Forum Python
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 225
Modifié par gravgun le 8/02/2015 à 19:31
Modifié par gravgun le 8/02/2015 à 19:31
'lut, le .dat n'est pas un CSV vu que les valeurs ne sont pas séparées par des virgules mais par des espaces.
En continuant sur ta lancée, il faut lire le fichier ligne par ligne, puis séparer les 3 données en utilisant l'espace comme délimiteur, puis finalement convertir le nombre sous forme de string en vrai nombre (type
Le reader CSV ne sert donc a rien et fait du boulot en trop, il faut se servir directement du fichier ouvert, qui fait aussi la lecture ligne par ligne:
Attention aussi: tu utilises Python 2, mais en Python 3 il faut retirer le "b" du mode d'
Aussi, le retour a la ligne vient avec
from human import idiocy
del idiocy
En continuant sur ta lancée, il faut lire le fichier ligne par ligne, puis séparer les 3 données en utilisant l'espace comme délimiteur, puis finalement convertir le nombre sous forme de string en vrai nombre (type
float).
Le reader CSV ne sert donc a rien et fait du boulot en trop, il faut se servir directement du fichier ouvert, qui fait aussi la lecture ligne par ligne:
f = open("donnees_accelerometre.dat","rb") for row in f: # row est notre ligne, on la sépare en 3: donnees = row.split(' ') # Puis on convertit chaque élément en float correspondant: donnees = [float(x) for x in donnees]À partir de là,
donneescontiendra
[7.956, 1.43638874404132, 3.45188690721989]par exemple; fais-en ce que tu souhaites.
Attention aussi: tu utilises Python 2, mais en Python 3 il faut retirer le "b" du mode d'
open, sinon tu te retrouveras avec des itérateurs
BufferedReaderplutôt que des
strings.
Aussi, le retour a la ligne vient avec
row, mais ici ce n'est pas grave.
from human import idiocy
del idiocy
Merci beaucoup de votre réponse, je commençait a désespérer.....
Mon problème est en fait de créer une nouvelle colonne nommée temps par exemple, et y insérer toutes les premières valeurs de chaque ligne...
j'ai essayé avec row[indicedelacolone] avec un range qui parcourt la liste entière mais il me sort toute la liste...
Merci encore mille fois !!!!
Mon problème est en fait de créer une nouvelle colonne nommée temps par exemple, et y insérer toutes les premières valeurs de chaque ligne...
j'ai essayé avec row[indicedelacolone] avec un range qui parcourt la liste entière mais il me sort toute la liste...
Merci encore mille fois !!!!
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 225
8 févr. 2015 à 20:11
8 févr. 2015 à 20:11
J'ai reparcouru la doc du reader/writr CSV de Python, il est possible de s'en servir avec un séparateur personnalisé, via le paramètre
Si tu comptes faire l'écriture de données, tu peux conserver ta méthode, elle te mettra a disposition la lecture et l'écriture simplifiée de tes "SSV" (space separated values).
delimiterde son constructeur.
Si tu comptes faire l'écriture de données, tu peux conserver ta méthode, elle te mettra a disposition la lecture et l'écriture simplifiée de tes "SSV" (space separated values).