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 :

pymssql: convertir un champ avec un chaine caractère avec ‘blabla \x96 blabla’


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut pymssql: convertir un champ avec un chaine caractère avec ‘blabla \x96 blabla’
    Bonjour,
    j'ai une variable dans une base donnée avec ‘blabla – blabla’. Lorsque je suis dans python et que je fais un print de la variable je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     print ('row[sql_attr]')
    'SU Finance \x96 Controlling'
    Je dois comparer mais deux chaînes identique mais l'une 'blabla \x96 blabla’ et l'autre 'blabla – blabla’. Elles sont identique mais badaoum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if row[sql_attr] != result_attr:
      print('ok')
    Bien sûr cela ne fonctionne pas, je n'ai pas envie de faire un 'seanch and replace'.

    Merci de votre aide et proposition.

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut,

    Peut-être un rapport avec l'encodage de tes données dans ta table, encodage par défaut de ta bdd ? Table ? Colonne ?
    Encodage des valeurs ayant été insérées ?
    Encodage de ton script python ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut
    C'est exactement ça, j'ai mis le champ en nvarchar dans sql server et tout est ok.
    Mais j'ai une question subsidiaire, j'aimerai savoir comme je peux convertir ce type chaine.

    'blabla \x96 blabla' vers 'blabla - blabla'.
    fonctionne 2.7 mais pas en 3.6.4,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> x = "abc" + chr(150)
    >>> x
    'abc\x96'
    x.decode("utf-8")
    Traceback (most recent call last):
      File "<pyshell#9>", line 1, in <module>
        x = x.decode("utf-8")
    AttributeError: 'str' object has no attribute 'decode'

    Merci

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est normal que x.decode(...) ne marche pas sous Python 3, parce qu'à l'exécution, x est DEJA en unicode.

    Mais rien n'empêche de faire le remplacement en unicode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = x.replace("\x96", '-')
    et si nécessaire d'encoder en 'utf-8' (on obtient alors une chaine de bytes):


Discussions similaires

  1. [Batch] Problème de chaine caractère avec espace
    Par dudux2 dans le forum Scripts/Batch
    Réponses: 14
    Dernier message: 31/08/2017, 18h35
  2. Réponses: 3
    Dernier message: 04/05/2014, 14h27
  3. Réponses: 1
    Dernier message: 11/06/2012, 23h16
  4. Réponses: 8
    Dernier message: 04/03/2012, 09h28
  5. Traitement des chaines caractères avec un séparateur
    Par Lolitaaa dans le forum Général Java
    Réponses: 2
    Dernier message: 09/07/2010, 12h21

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