IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Traduire du texte par rapport a un CSV


Sujet :

Python

  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 averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut Exemple avec une fonction de remplacement
    Bonjour,
    Dis moi si cela convient (python 2.7):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 à 09h19. Motif: des photes d'aurtaugraf

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/07/2007, 16h49
  2. Ajuster un champ texte par rapport au contenant
    Par dinette dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2007, 03h08
  3. Remplir une zone de texte par rapport à une checkbox
    Par beegees dans le forum Général JavaScript
    Réponses: 43
    Dernier message: 04/09/2006, 17h01
  4. [CSS] Aligner le texte par rapport aux puces de listes
    Par Invité dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 20/11/2005, 10h35
  5. faire disparaitre du texte par rapport à radio bouton
    Par allowen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/10/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo