Accueil > Forum > > > > traiter des chaines de caracteres provenant d'un fichier exterieur
traiter des chaines de caracteres provenant d'un fichier exterieur
mercredi 24 octobre 2007 à 15:13:19 |
traiter des chaines de caracteres provenant d'un fichier exterieur

gwenc_hlan
|
bonjour, je dispose de chaines de caractere qui sont de la forme suivante : 'Acier X ma 210000 210000 0.3 79000 7800\n' je désire mettre chacun de ces élément dans une liste en transformant les 5 derniers en reels et en enlevant le \n de fin de ligne. pour enlever, le \n, pas de probleme. par contre, comment faire pour obtenir une liste du type ['Acier','X','ma',210000,210000,0.3,79000,7800] ?? j'essai plein de truc, mais rien ne donne de résultat satisfaisant (en général, je fait un truc dans le genre : res=[] k='' for el in liste : if el != ' ': k=k+el elif el == ' ': res.append(k) k='' mais la liste obtenue est bien souvent mauvaise. soit mon premier terme devient '7800Acier' et le dernier terme (7800) disparait. soit le dernier terme n'est pas du totu dans la liste. enfin bref, j'y arrive pô ! un conseil ? 
|
|
mercredi 24 octobre 2007 à 19:04:39 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

Dobel
|
Réponse acceptée !
Salut déjà, tu peux commencer par utiliser split pour découper la chaine, et pourquoi pas une petite fonction de conversion séparée. s="Acier X ma 210000 210000 0.3 79000 7800\n"
def conv(s): try: return float(s) except: return s
l = [ conv(token) for token in s.split() ] print l Dobel [Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
|
|
jeudi 25 octobre 2007 à 01:43:12 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

Marnage
|
Oui ou alors pour utiliser split il y a bien plus simple : liste = string.split(chaine)# chaque espace créra une nouvelle entré dans la liste liste = string.liste(chaine,"separateur") # a chaque séparateur de la chaine , une nouvelle entré sera mi dans la liste Ou encore le faire a la main (comme je le fesais que je ne connaisser pas l'éxistence du split) genre : chaine = ("blabla blabla bla bla") seprateur = ' ' liste, decoup = [], "" while ( i < len(chaine) ): if (chaine[i] == separateur ) : liste.append(decoupe) decoup = "" decoup += chaine[i] i += 1 
|
|
jeudi 25 octobre 2007 à 08:53:36 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

gwenc_hlan
|
par contre, pourquoi que quan ze convertile '0.3' en float, il devient 0.2999999.... moi ze veu pas de 0.29, ze veu 0.3. z'est mon coefficient de poisson pour mon materiaux, et za doit rezter 0.3. mais d'où donc peu provenir zela et comment zy remédier ??!! 
|
|
jeudi 25 octobre 2007 à 14:19:43 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

Dobel
|
Bienvenu dans le monde binaire  0.3 ne peux pas être représenté en binaire avec un nombre fini de chiffre. ça fait 0.010011001100... Après, comme 0.3 ne peut pas être représenté de façon exacte, 0.3 va être converti de façon approchée en binaire d'une façon qui peut varier suivant le langage. Sur ma machine, en C, il semble le convertir vers 0.3000...119 et en python, vers 0.29999... sinon... est-ce que ça a seulement un sens (physique) de faire une différence entre 0.3 et 0.29999 ?? Demande toi ce que représente ton coefficient, si ça a un sens physique de vouloir une précision de 10 chiffres après la virgule dessus, par rapport à sa signification, la façon dont il a été mesuré, les écarts suivant les pièces... Dobel [Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
|
|
jeudi 25 octobre 2007 à 18:35:41 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

aera group
|
Convertir '3.0' en 3.0 ce fait par cette méthode : a = '0.3' a = eval(a)
Pas très compliqué !! ______ Aéra 
|
|
jeudi 25 octobre 2007 à 22:35:15 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

Dobel
|
enfin, entre utiliser juste float(s) et utiliser eval... eval va quand même traiter s comme une expression python complète, donc vérifier la syntaxe, puis interprêter. c'est juste 15x plus lent qu'utiliser float  Dobel [Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
|
|
vendredi 26 octobre 2007 à 08:17:00 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

gwenc_hlan
|
ben oui, c'est important que ce coefficient reste le meme, c'est ce qui relie le module dans le sens longitudinal de mes fibre au module dans le sens transversal ( ou ce qui relie les déformation dans la longueur aux déformation dans la largeur. c'est pareil). maintenant, vu les calculs, je peu me contenter d'un 0.299999999999999 si je suis capable d'arrondire le résultat du calcul à un ou deux chiffres (grand maximum) apres la virgule. par exemple, comme je le disais, on a la relation El/COEF lt =Et/COEF tl. en supposant que nous conessions les deux modules et le coef selon lt, si je dois calculer le coef selon tl, je ne dois pas afficher un résultat comportant plus de deux décimales (apres, ça n'a plus aucun sens).
donc, comment pouvoir faire ça ? merci.
|
|
vendredi 26 octobre 2007 à 08:59:53 |
Re : traiter des chaines de caracteres provenant d'un fichier exterieur

Dobel
|
pour arrondir un flotant, simplement round(f, n) avec n le nombre de chiffres après la virgule, mais c'est toujours insuffisant pour l'affichage, vu que le problème de la représentation binaire du résultat s'affiche toujours : >>> round(0.3, 2) 0.29999999999999999
Pour arrondir au moment de l'affichage, il y a une syntaxe pour formatter les chaines à la printf >>> f=0.3 >>> print "%.2f" % f 0.30
( http://docs.python.org/lib/typesseq-strings.html#l2h-271 )
Dobel [Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]
|
|
Cette discussion est classée dans : liste, chaines, traiter, terme, el
Répondre à ce message
Sujets en rapport avec ce message
Liste le contenu d'un répertoire [ par MHI ]
Le code suivant me génére un fichier vide, alors que mon répertoire contient bien un répertoire et 3 fichiers :import osimport dircachefic = open('Lis
[help] traitement de formulaires et recherche de DOC [ par johanb ]
Bonjour à tous, je viens de me lancer dans le python et j'i de gros problèmes avec la syntaxe que je ne connias pas bien.Donc tout d'abord si quelqu'u
liste des process en cours [ par rodrigos ]
Bonjour, Je suis sous windows et je cherche à obtenir la liste des process en cours sur le pc. La seule foncyion que j'ai rouvé est la fonction EnumP
Zope: Contenu d'une liste en fonction d'une autre [ par keumlebarbare ]
AU SECOURS!!!! Je suis tout ce qu'il y a de plus débutant en Zope, et je crois que si je continue à galérer comme ca, je me (re)met a PHP!!!
manipulation des chaines [ par anis50 ]
salut a tous,j'ai une chaine comme suit:"c:\rep1\rep2\rep3\fich.exe" je voudrai éliminer le nom de fichier de cette chaine:c'est a dire obtenir la cha
Ou trouver la liste des fonction disponible... [ par CotCouture ]
Bonjour j'aimerais savoir ou je peux trouver la liste des fonction disponible dans les logiciel office? Cot Couture
lister les fichiers d'un dossier [ par killroy988 ]
Bonjour, je vous écris car je suis débutant en Python et j'aimerais réaliser un petit programme pour m'entrainer à la base et aux fichiers...J'ai malh
Définir une liste de string [ par Mr.X ]
Mon problème est que dans ma classe une fonction execute une instruction du type : self.lst[i] = bufferet python me renvoi que self.lst n'est pas défi
Liste des applications ouvertes ? [ par budhax ]
Sous MS Windows, comment obtenir (dans la console de sortie) la liste des applications ouvertes (celles ayant un bouton dans la barre des taches).Une
Liste des applications Windows [ par aera group ]
Bonjour,Je cherche à savoir s'il excise un sous programme de Windows qui renvoi la liste des applications ouvertes actuellement. Par exemple, si j'ai
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|