+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité
    Invité(e)

    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.

  2. #2
    Membre confirmé Avatar de alexdevl
    Profil pro
    Inscrit en
    avril 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : avril 2007
    Messages : 248
    Points : 293
    Points
    293

    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

  3. #3
    Invité
    Invité(e)

    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 :
    #!/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 !
    Dernière modification par Invité ; 09/01/2013 à 10h19. Motif: des photes d'aurtaugraf

  4. #4
    Membre confirmé Avatar de alexdevl
    Profil pro
    Inscrit en
    avril 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : avril 2007
    Messages : 248
    Points : 293
    Points
    293

    Par défaut

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •