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

Autres Logiciels Discussion :

[Notepad++] Remplacer des chiffres à virgules par des points


Sujet :

Autres Logiciels

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut [Notepad++] Remplacer des chiffres à virgules par des points
    Bonjour,

    Je dois traiter un grand nombre de fichiers (des .sql). On me les a fourni tels quels. Je dois réimporter des lignes de ce format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (13536, 2011, 0, 0, 0, 0, 0, 0, 0, 177,18, 0, 0, 22,17, 0, 0, 0, 0, 0, 170.31, 0, NULL, NULL, NULL, NULL)
    Problème : lors de l'export, la virgule a été choisie comme séparateur, et séparateur de champ. Très pratique à retraiter... Je me retrouve donc avec des fichiers impossibles à importer, car chaque virgule est considérée comme un séparateur de champs, et ma ligne en contient donc trop par rapport aux champs de la table.

    La seule différence vient des espaces : avec un espace, c'est un nouveau champ ; sans espace, d'un chiffre avec décimale.

    Dans mon exemple, je voudrais donc remplacer "177,18" et "22,17" par "177.18" et "22.17". Sans toucher aux autres virgules, qui sont suivies par un espace.

    J'ai essayé diverses expressions régulières, à base de [\d]+ et [\s], sans aucun résultat probant.

    Qui aurait une idée pour arriver à remettre d'aplomb mes fichiers ? A la main j'en ai pour des semaines

    Merci pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Bon, je suis un gros boulet... 2h que je cherche une expression régulière, et en relisant mon post la solution m'a sauté aux yeux.

    Il suffit de remplacer ", " (virgule espace) par une chaîne quelconque : TOTO par exemple. Le fichier devient illisible mais peu importe.

    Les seules virgules qu'il reste sont celles qui ne sont pas suivies d'espace (donc les séparateurs de décimale). Je les ai remplacé par un point.

    Enfin, reremplacer la chaîne TOTO par ", " (virgule espace) pour retrouver les données du départ, et hop, la magie opère.

    Merci Developpez pour l'inspiration

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En désespoir de cause, je me greffe à votre discussion pour avoir de l'aide sur mon problème.

    je veux
    Ajouter après integer le mot unsigned
    Ajouter AVANT la virgule le texte AUTO INCREMENT

    idlong toto integer not null,
    logklon moyoto varchar(20) not null,
    idpoio toto integer not null,
    logklon moyoto varchar(20) not null,
    Si je saisie dans recherche:
    (^id.+)+(integer)+(.*)

    Dans remplacer
    \1 \2 unsigned\3

    j'obtiens
    dlong toto integer unsigned not null,
    logklon moyoto varchar(20) not null,
    idpoio toto integer unsigned not null,
    logklon moyoto varchar(20) not null,
    1er problème:
    Par contre l'espace avec le mot précédent integer est répété

    2ème problème:
    Je ne sas pas comment faire pour ajouter auto increment en fin de ligne avant la virgule.
    J'avais tenté dans
    chercher: (^id.*)+(integer)+(.*)+([,])
    Remplacer : \1 \2 unsigned\3 auto\4

    Mais j'obtiens ça

    idlong toto integer unsigned auto
    logklon moyoto varchar(20) not null,
    idpoio toto integer unsigned auto
    logklon moyoto varchar(20) not null
    Adieu la joie

    Merci pour votre aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  4. #4
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Hello,

    Je ne suis pas sûr de tout comprendre (nuit difficile), je vais essayer de t'aider.

    je veux
    Ajouter après integer le mot unsigned
    Ajouter AVANT la virgule le texte AUTO INCREMENT
    Est-ce que ceci conviendrait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idlong toto integer unsigned not null AUTO INCREMENT,
    logklon moyoto varchar(20) not null AUTO INCREMENT,
    idpoio toto integer unsigned not null AUTO INCREMENT,
    logklon moyoto varchar(20) not null AUTO INCREMENT,

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Salut Jarodd,

    C'est exactement ça, excepté que les modifs ne sont que pour les lignes qui commencent par id donc ça donnerai ça

    idlong toto integer unsigned not null AUTO INCREMENT, <== Ajout de unsigned derrière integer et de AUTO INCREMENT avant la virgule car la ligne commence par id
    logklon moyoto varchar(20) not null , <== Aucun changement car ne commence pas par id
    idpoio toto integer unsigned not null AUTO INCREMENT, <== Ajout de unsigned derrière integer et de AUTO INCREMENT avant la virgule car la ligne commence par id
    logklon moyoto varchar(20) not null ,<== Aucun changement car ne commence pas par id
    Merci encore pour ton aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  6. #6
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Cool pour une fois que je comprends du premier coup

    Ce n'est pas fait avec une regex mais un simple Rechercher/Remplacer (Ctrl + H) avec Notepad++.

    Au départ tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idlong toto integer not null,
    logklon moyoto varchar(20) not null,
    idpoio toto integer not null,
    logklon moyoto varchar(20) not null,
    Tu remplaces "integer" par "integer unsigned". Tu obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idlong toto integer unsigned not null,
    logklon moyoto varchar(20) not null,
    idpoio toto integer unsigned not null,
    logklon moyoto varchar(20) not null,
    Ensuite tu remplaces "unsigned not null," par "unsigned not null AUTO INCREMENT,", cela n'impacte que les lignes unsigned (donc avec l'id), et tu auras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idlong toto integer unsigned not null AUTO INCREMENT,
    logklon moyoto varchar(20) not null,
    idpoio toto integer unsigned not null AUTO INCREMENT,
    logklon moyoto varchar(20) not null,

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Jarodd,

    L'ajout de unsigned ne dépend pas de l'existence d'integer mais de l'existence de id en début de ligne =>Est ajouté à integer unsigned que si la ligne commence par id

    Pareil pour autoincrement

    Donc si

    idtoto integer not null gralop,
    toto intger not null zolol,
    idtiuop integer not null kouloa,
    Après traitement

    idtoto integer unsigned not null gralop autoincrement,
    toto intger not null zolol, <= Pas de changement
    idtiuop integer unsigned not null kouloa autoincrement,
    Le truc doit être générique et pas dépendre de la structure de la ligne
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  8. #8
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Alors je ne sais pas. Tu devrais poster dans le forum des regexp plutôt.

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Salut Jarodd

    J'ai trouvé une solution qui prend tout de même en compte la structure de la ligne, structure qui doit être donc répétitive. Pour info ma solution est ici

    Et encore merci pour ton aide Jarodd
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

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

Discussions similaires

  1. lien avec des chiffres séparés par des points
    Par dominos dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2013, 17h36
  2. Réponses: 5
    Dernier message: 23/07/2009, 19h49
  3. [MySQL] Remplacer les chiffres à point par des chiffres à virgule
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/12/2008, 14h57
  4. Remplacer les virgules par des points
    Par vatsyayana dans le forum Excel
    Réponses: 7
    Dernier message: 14/06/2008, 11h13
  5. Comment changer des virgules par des points
    Par solorac dans le forum Excel
    Réponses: 2
    Dernier message: 30/07/2007, 10h38

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