Convertir un string en number

Bonjour,
Je débute avec Knime. Malgré la lecture des sujets traites, je n’ai pas trouvé la réponse à mon problème. J’ai un fichier avec une variable en string salaire sous la forme 56 467,50 €. Je souhaite la convertir en number (double). Le résultat obtenu est les valeurs manquantes (?).

Pour faire cette conversion, je suis passée par les étapes suivantes :

  • Suppression de €
  • Remplacement de , (virgule) par . (point) car je suppose que le séparateur dans Knime est un point(.)
  • Conversion des valeurs en number grâce au noeud String To Number.

Pouvez vous me dire ce qui ne va pas dans ma démarche ?

Mon flux de données :

Configuration du noeud String To Integer :

Résultat obtenu :

Message d’avertissement :

Bienvenue sur le forum, @Mireille_OBAMA.

Je pense que le problème c’est l’espace en “56 467,50 €”.

Après avoir supprimé le “€”, vous pouvez utiliser le nœud String to Number pour définir le séparateur décimal “,” et le séparateur des milliers " " en même temps.

image

Bonsoir Mireille,

Bienvenue au forum de KNIME!
Ce n’est pas souvent qu’on voit passer des messages en français. Heureux d’y répondre !

D’après le message d’erreur de la console, il semblerait que KNIME ne soit pas content avec les espaces avant la conversion des strings en nombre . Il faudrait donc éliminer les espaces des phrases. De mémoire (je réponds depuis mon téléphone portable :slight_smile:), il faudrait rajouter une fonction

replace( $phrase$, " ", “”)

dans le noeud -string manipulator- afin de supprimer les espaces des phrases, où $phrase$ représente ici ce que vous avez déjà écrit comme fonction dans ce nœud.

J’espère que ceci vous sera d’aide.

Meilleurs vœux

Ael

EDIT: @elsamuel a été plus rapide et je découvre qu’il parle aussi francais lol

3 Likes

Merci pour votre aide. J’ai appliqué vos conseils mais j’ai toujours la même erreur. Je me demande si j’ai bien configuré le noeud String To Number. La configuration et le message d’erreur est le suivant. Le résultat est le même que celui de mon premier post.

Bonsoir,
Je vous remercie pour votre aide. J’ai supprimé les espaces comme vous me l’avez conseillé avant de convertir ma variable. J’ai la même erreur et le même résultat avec les valeurs manquantes.

Suppression des espaces

Conversion de string en number

@Mireille_OBAMA, avez-vous tapé un espace dans la case “Thousands separator”? Pouvez-vous partager votre “workflow”?

Voici l’exemple que j’ai utilisé. Essayez d’ajouter vos propres données.

1 Like

Mon workflow

Oui j’ai tapé un espace dans la case “Thousands separator”

Voilà les données que j’ai dans mon nœud String Manipulation

@Mireille_OBAMA l’erreur affichée dans la console montre que les espaces n’ont pas été supprimés. Est-ce que vos espaces sont vraiment des caractères blancs (ASCII n. 32 de mémoire)? C’est possible que ça soit un autre caractère ASCII avec la même apparence d’où l’erreur :thinking: ?

Les données avant la suppression des espaces sont les suivantes. Pensez vous qu’un caractère spécial puisse exister (variable concernée : Salaire)

@Mireille_OBAMA, avez-vous vérifié le workflow que j’ai posté ? Pouvez-vous partager votre fichier de données? Il est difficile de dépanner avec seulement une image.

@Mireille_OBAMA, le mieux serait que vous fassiez un copier-coller ici d’une partie de la colonne $salaire$ en mode texte, ou bien comme proposé par @elsamuel, que vous partagiez vos données sous forme de fichier, i.e. en format CSV.

Oui, j’ai vérifié le workflow que vous avez posté.

Ci-joint, mon fichier de données
Table remuneration.xlsx (36.8 KB)

Je ne peux pas envoyé un fichier csv. J’ai envoyé un fichier excel

Est-ce que c’est le meme fichier que vous avez utilisé? Quand j’importe ce fichier Excel, la colonne Salaire de base mensuel est “Number (double)”, Il n’y a donc pas besoin de conversion:

Quand j’enregistre le fichier Excel au format CSV, et le charge dans KNIME, le séparateur décimal est “.” et le séparateur des milliers est “,”

Si je place ces données dans le workflow que j’ai partagé, et je revise les options de séparation dans le nœud String to Number, tout fonctionne comme prévu

Quand je change les séparateurs dans le CSV pour qu’ils correspondent aux tiens, tout fonctionne aussi

C’est bizarre car quand je charge le même fichier, la colonne Salaire est en String comme dans l’image ci-dessous et j’ai le pas le séparateur des milliers. Peut être faut il une configuration de plus ?

Pourrais je voir la configuration du nœud String To Number SVP ? Je pense que c’est à ce niveau que se trouve le problème. J’ai le même résultat que vous pour le nœud String Manipulation.

Voilà la configuration de mon noeud String To Number

J’ai toujours comme résultat des valeurs manquantes

Bonjour @Mireille_OBAMA et bienvenue sur le forum.

Est-ce possible d’uploader le fichier csv en tant que .txt? Excel joue souvent des tours.

Aussi qu’elle est la configuration de votre locale? Les formats de chiffre varient tout dépandant le locale.

1 Like

Bonjour,

Excusez moi, j’ai été bloquée par Knime car mon quota du nombre d’échange avait été atteint, il me fallait attendre plusieurs heures.

J’utilise la version 4.5.0. La configuration est celle par défaut à part l’encoding que j’ai modifié en utf-8. Je ne sais pas si j’ai répondu à la question.

Le fichier au format txt.
Table remuneration.txt (12.3 KB)