Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 16h11   #1
fanfray
Invité de passage
 
Homme Etienne
Administrateur systèmes et réseaux
Inscription : avril 2011
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme Etienne
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2011
Messages : 16
Points : 3
Points : 3
Par défaut Traduire du texte par rapport a un CSV

Bonjour,

Je dispose de petits fichiers à traduire en plusieurs langue. Je dispose également d'un CSV avec les mots en Français dans la première colonne et leur traduction dans une autre langue dans la seconde colonne.

Je cherche donc à faire un script en Python capable de lire le fichier d'origine de faire la comparaison des mots et de l'enregistrer dans un fichier de destination.

Pour infos e fichier d'origine et de destination est un fichier texte.

Je bloque sur la partie pour faire la comparaison.

D'avance merci pour votre aide.
fanfray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 22h49   #2
alexdevl
Membre confirmé
 
Avatar de alexdevl
 
Inscription : avril 2007
Messages : 239
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 239
Points : 275
Points : 275
Par défaut Exemple avec une fonction de remplacement

Bonjour,
Dis moi si cela convient (python 2.7):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import csv
 
def replace_all(text, dic):
    """ Fonction de remplacement d'une chaine à partir d'un dictionnaire """
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text
 
 
with open('dico.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',')
    dic={}
    for line in spamreader:
        dic[line[0]]=line[1] # Création du dictionnaire
    print dic
 
with open("source.txt","r") as source_file,open("target.txt","w") as target_file:
    for source_line in source_file:
        target_line=replace_all(source_line,dic) # lecture de la ligne source puis remplacement
        target_file.write(target_line) # Ecriture de la ligne destination
dico.csv est par exemple :
Code :
1
2
3
hello,bonjour
everybody,tout le monde
nobody,personne
alexdevl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 09h18   #3
fanfray
Invité de passage
 
Homme Etienne
Administrateur systèmes et réseaux
Inscription : avril 2011
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme Etienne
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2011
Messages : 16
Points : 3
Points : 3
Par défaut Script de translation terminé !

Désolé pour le retard ! Je n'ai pas testé ton code car je ne comprenais pas tout. J'ai donc préféré le faire par mes propres moyen avec pour aide à ma démarche le dev de notre société.

Voici ce le résultat :
Citation:
#!/usr/bin/env python
#
# Script exécuter sous Windows dans un environnement Python 3.X
#

import csv, os

# ouverture fichier source contenant les informations de base en Français
source_fr_filename = open("source_fr.txt", "r")

# fichier de translation contenant les traductions
source_csv_filename = "translate.csv"

# ouverture fichier de destination contenant les informations modifiées
destination_muti_filename = open("destination_multi.txt", "w")

# lecture du fichier source puis transfert des données dans une variable
source_fr_string = source_fr_filename.read()

# on passe texte source en minuscule
source_fr_string_lower = source_fr_string.lower()

print ()
print ("Traitement de : ", source_csv_filename)
print ()

# ouverture puis lecture du csv de translation
original_csv_multi = open(source_csv_filename, "r")
original_csv_multi_reader = csv.reader(original_csv_multi)

# on parcours les lignes du CSV
for row in original_csv_multi_reader:

source_fr_string_lower = source_fr_string_lower.replace(row[0].lower(), row[1].lower())

original_csv_multi.close()

#écriture des données dans le fichier de destination
destination_muti_filename.write(source_fr_string_lower)
print ()
print ("Traitement de : ", source_csv_filename, "terminé !")
print ()
os.system("pause")
Je pense qu'il y a beaucoup de chose à améliorer notamment mes csv de translation ainsi que le fait de passer par un menu interactif en fonction des langues ....

En tout cas merci !
fanfray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 05h59   #4
alexdevl
Membre confirmé
 
Avatar de alexdevl
 
Inscription : avril 2007
Messages : 239
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 239
Points : 275
Points : 275
Bonjour,
Merci d'avoir posté ta solution, n'hésite pas à demander.
Au passage tu peux regarder l'utilisation de la forme ''with open as '' qui est conseillé pour le traitement de fichier.
alexdevl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h16.


 
 
 
 
Partenaires

Hébergement Web