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 :

Supression ou remplacement de caractère


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut Supression ou remplacement de caractère
    Bonjour,

    Je souhaite importer des données depuis un fichier CSV vers une base postgre.
    Des caractères speciaux nuisent au bon fonctionnement du programme (ici un simple cote ')

    Comment puis-je y remedier? (supression du caractere ou remplacement par un espace)

    Voici mon code d'extraction des données pour établir une requete d'insertion dans la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def convert():
       f.next()
       for line in f:
     
             cur = connection.cursor()
             dp = line.split('	')  
             req ="INSERT INTO Geonames VALUES ("+dp[11] + ",'" + dp[0] + "','" + dp[1] + "'," + dp[2] + ",'" + dp[3] + "','" + dp[4] + "','" + dp[5] + "'," + dp[6] + "," + dp[7] + ",'" + dp[8] + "','" + dp[9] + "','" + dp[10] + "')"
             cur.execute(req)
             connection.commit()
    Voici l'erreur:
    Traceback (most recent call last):
    File "./copy_name.py", line 34, in <module>
    convert()
    File "./copy_name.py", line 31, in convert
    cur.execute(req)
    psycopg2.ProgrammingError: erreur de syntaxe sur ou près de « s »
    LINE 2: ...G','ATG',28,'AC','Antigua et Barbuda','Saint John's',443.0,6...

  2. #2
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    Désolé pour le dérangement, j'ai trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def convert():
       f.next()
       for line in f:
     
             cur = connection.cursor()
             dp = line.split('	')
             dp[4]=dp[4].replace(",", "_")
             dp[5]=dp[5].replace(",", "_")
             dp[4]=dp[4].replace("'", "_")
             dp[5]=dp[5].replace("'", "_")
             req ="INSERT INTO Geonames VALUES ("+dp[11] + ",'" + dp[0] + "','" + dp[1] + "'," + dp[2] + ",'" + dp[3] + "','" + dp[4] + "','" + dp[5] + "'," + dp[6] + "," + dp[7] + ",'" + dp[8] + "','" + dp[9] + "','" + dp[10] + "')"
             cur.execute(req)
             connection.commit()

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Au lieu de construire la chaîne SQL sous forme d'un string, il vaut mieux utiliser la substitution de paramètre, c'est à dire placer des marqueurs dans la chaîne SQL et passer un second paramètre à cursor.execute qui contient les valeurs à remplacer dans la chaîne. Normalement, le module se charge alors des conversions nécessaires.

    La syntaxe précise dépend du style de paramètres utilisé par psycopg2. Je pense qu'il utilise le format suivant: les éléments à remplacer sont notés "%(name)s" et le second paramètre passé à execute est un dictionnaire qui doit contenir une clé "name".
    Par exemple (code non testé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = "INSERT INTO table VALUES(%(id)s, %(name)s)"
    cur.execute(sql, { "id": 1, "name" : "toto" } )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacement du caractère ?
    Par Mvu dans le forum ASP
    Réponses: 9
    Dernier message: 06/01/2005, 18h11
  2. Réponses: 11
    Dernier message: 01/12/2004, 19h09
  3. [CR] Chercher et remplacer un caractère dans 1 chaine
    Par franck.cvitrans dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 29/09/2004, 16h42
  4. Fonction permettant de remplacer des caractères
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 06/09/2004, 15h48
  5. Remplacer un caractère
    Par Mvu dans le forum ASP
    Réponses: 5
    Dernier message: 20/07/2004, 09h57

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