Fonction Word () donnant la mauvaise sortieBonjour à tous,
J'ai du mal à utiliser la fonction word(). Je commence par un .csv
Par exemple:
col1, col2
0,556
0,557
0,558
-1 225
-1 226
Datafile = Load Text File (...);
line_content = Words (Datafile, "\!n");
For(nn=2, nn <= N items (line_content), nn++,
Col1_list=Word(1,line_content[nn], ",");
Col2_list=Word(2,line_content[nn], ",");
);
Les listes résultantes sont :
{"0", "0", "0", "-12", "-12"}
{"556", "557", "558", "25", "26"}
donc la fonction word() fonctionne différemment si la ligne commence par un moins... J'ai essayé Item() et en utilisant une clause Num(Word()), mais cela ne change rien. J'ai aussi essayé Word(1,Trim(line_content[nn],",")).
J'utilise JMP 14.0.0
Merci d'avance
Re: Fonction Word () donnant la mauvaise sortieMerci encore pour vos idées. Cela a l'air bien aussi. Je n'ai aucune idée de ce qui a changé, mais JMP importe maintenant correctement les fichiers avec le script d'hier lorsque j'ai initialement posté la question (à l'exception de l'erreur que j'ai commise ici dans le message). Il doit y avoir un mélange de paramètres Windows/Excel de niveau supérieur entre "," et "." différenciation décimal/point. J'ai configuré mes fenêtres allemandes pour utiliser la norme américaine.Re: Fonction Word () donnant la mauvaise sortieJe ne sais pas exactement ce que vous recherchez maintenant, mais le petit script ci-dessous lit dans votre fichier .csv et renvoie les 2 listes que vous avez spécifiées, sans erreur.Le seul élément que j'ai ajouté était de m'assurer que tous les caractères de retour chariot qui existent dans le fichier ne sont pas inclus dans les valeurs des listes.
names default to here(1);
Datafile = Load Text File ("...……...\WFR1_sample1.csv");
line_content = Words (Datafile, "\!n");
// Get rid of all lines upto the Graph data
// The \!r is a Carriage Return character which is at the end of each line
line_content = remove(line_content,1,loc(line_content,"{QgWave Graphs}\!r")+1);
Col1_list = {};
Col2_list = {};
For(nn=1, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ",\!r"));
insert into(Col2_list,Word(2,line_content[nn], ",\!r"));
);Re: Fonction Word () donnant la mauvaise sortieVoici le csv d'origine ci-joint. J'ai fait regarder mon collègue par-dessus l'épaule, il l'a vu aussi... Il est reproductible.
Re: Fonction Word () donnant la mauvaise sortieOh, mes excuses. J'ai utilisé l'expression :
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>nn<SPAN class="token operator">=</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN> nn <SPAN class="token operator"><=</SPAN> N items <SPAN class="token punctuation">(</SPAN>line_content<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> nn<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
Col1_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Col2_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Je vais passer à l'utilisation de la fonction insert into (), qui est beaucoup plus pratique. Merci.
Si j'utilise l'exemple .csv que vous avez fourni, le code fonctionne effectivement.
Mais j'ai juste commencé à remettre en question ma santé mentale et j'ai ouvert les fichiers .csv avec différents éditeurs : bloc-notes Windows, bloc-notes++, Word Pad, Excel. Toutes les quelques exécutions, les colonnes de données affichées auront la virgule à un endroit différent, indépendamment des programmes utilisés. Je n'avais jamais vu ça avant. Je pourrais juste quitter le travail et rentrer à la maison.




Re: Fonction Word () donnant la mauvaise sortieVotre syntaxe me paraît suspecte.Je ne sais pas comment vous créez votre Col1_list et Col2_list créerait jamais une liste concaténée.Voici ma modification, et ci-joint le fichier csv que j'ai utilisé.Il crée les 2 listes sans erreur sur JMP 14.1
Datafile = Load Text File (".................\test.csv");
line_content = Words (Datafile, "\!n");
Col1_list = {};
Col2_list = {};
For(nn=2, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ","));
insert into(Col2_list,Word(2,line_content[nn], ","));
);