Word () 函数给出错误的输出大家好,
我在使用 word() 函数时遇到问题。 我从 .csv 开始
例如:
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], ",");
);
结果列表是:
{“0”,“0”,“0”,“-12”,“-12”}
{"556", "557", "558", "25", "26"}
因此,如果该行以减号开头,则 word() 函数的工作方式会有所不同... 我试过 Item () 并使用 Num(Word()) 子句,但它没有改变任何东西。 我也试过 Word(1,Trim(line_content[nn],","))。
我正在使用 JMP 14.0.0
提前致谢
Re: Word () 函数给出错误的输出再次感谢您的想法。 这看起来也不错。 我不知道发生了什么变化,但 JMP 现在可以使用昨天我最初发布问题时的脚本正确导入文件(除了我在帖子中犯的错误)。 “,”和“。”之间一定有一些更高级别的 Windows/Excel 设置混淆。小数/小数点微分。 我已将我的德国 Windows 配置为使用美国标准。Re: Word () 函数给出错误的输出我不太确定您现在在寻找什么,但下面的小脚本会读取您的 .csv 文件并返回您指定的 2 个列表,没有错误。我添加的唯一项目是确保文件中存在的任何回车符不包含在列表的值中。
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: Word () 函数给出错误的输出这是附加的原始 csv。 我让我的同事回头看,他也看到了…… 它是可复制的。
Re: Word () 函数给出错误的输出哦,对不起。 我用了这样的表达:
<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>
我会改用insert into()函数,这样方便很多。 谢谢。
如果我使用您提供的示例 .csv,代码确实有效。
但我刚刚开始质疑自己的心理健康状况,并使用不同的编辑器打开了 .csv 文件:Windows 记事本、notepad++、Word Pad、Excel。 每隔几次运行,显示的数据列都会在不同的地方有逗号,这与使用的程序无关。 我以前从未见过这个。 我可能会下班回家。




Re: Word () 函数给出错误的输出我怀疑你的语法。我不确定您是如何创建 Col1_list 的,而 Col2_list 是否会创建一个串联列表。下面是我的修改,附件是我使用的csv文件。它在 JMP 14.1 上创建了 2 个列表而没有错误
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], ","));
);