cs_bossou
Messages postés71Date d'inscriptionvendredi 2 juin 2006StatutMembreDernière intervention 7 octobre 2011
-
23 nov. 2009 à 11:45
afranck64
Messages postés5Date d'inscriptionlundi 11 août 2008StatutMembreDernière intervention17 novembre 2011
-
23 nov. 2009 à 18:49
Bonjour tout le monde.
j'ai un fichier texte que je crée à partir un autre fichier. le nouveau fichier créer contient plusieurs lignes dont chaque ligne est écris sous forme de liste par exple la première ligne peut etre sous la forme : ['abcjhjf','88888','cdockm',gfoppl','','','',5666']
et la deuxième ligne est :
['30422422', '05/11/2009', '76.99', 'USD', 'CHASUS33XXX', '9102785996']
toutes les lignes de mon fichier sont du meme format.
je voudrais reécrire toutes les lignes sous cette forme :
>>> mot = ['30422422', '05/11/2009', '76.99', 'USD', 'CHASUS33XXX', '9102785996']
>>> for i in mot:
print i,
30422422 05/11/2009 76.99 USD CHASUS33XXX 9102785996
quand j'exécute ce petit script pour une seule ligne ça marche mais quand je l'applique à mon fichier entier où mon script doit s'appliquer à chaque ligne rien ne marche. quelqu'un pourrait m'aider svp!
merci
(c'est à dire des listes écrite avec la même syntaxe que celle de python)
et tu veux lire ce fichier, et transformer les listes en chaînes.
Si c'est bien ça :
# -*- coding: utf-8 -*-
# ouvre ton fichier avec tes listes
my_file = open("/tmp/toto")
for line in my_file.readlines():
# lire la liste
a = eval(line)
# une fonction anonyme pour concaténer 2 chaînes avec un espace
f = lambda x, y: x + " " + y
# création de la chaîne
print reduce(f, a)
# ou alternativement, si tu veux supprimer les éléments vides ''
# print reduce(f, [v for v in a if v != ""])
my_file.close()
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]
cs_bossou
Messages postés71Date d'inscriptionvendredi 2 juin 2006StatutMembreDernière intervention 7 octobre 20111 23 nov. 2009 à 14:50
Merci pour la réponse.
j'ai suivi ce que tu as écris mais ça ne marche pas j'ai une erreur sur a=eval(line). aussi une petite précision je souhaite garder mes retours de ligne tels qu'ils sont, et garder mes espaces entre mes mots. je veux seulemnt récupérer une chaine de caractères sans rien enlever parce que chaq espace dans chaque ligne est important pour le traitement du fichier en sorti. Merci
afranck64
Messages postés5Date d'inscriptionlundi 11 août 2008StatutMembreDernière intervention17 novembre 2011 23 nov. 2009 à 18:49
nano anf
salut tu peux essayer le code suivant:
fic1 = open('tmp/fic_entree.txt')
fic2 = open('tmp/fic_sortie.txt','w')
for line in fic1.readlines():
#lit la liste
for char in line: #va remplacer les caractères génants
if char == "'":line.replace(char,"")
elif char == ",":line.replace(char," ")
elif char == "[",line.replace(char,"")
elif char == "]",line.replace(char,"")
elif char == "(",line.replace(char,"")
elif char == ")",line.replace(char,"")
fic2.writeline(line) # sauvegarde la nouvelle ligne dans ton fichier de sortie
fic2.close()