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.
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 |
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 !