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 现在使用昨天我最初发布问题时的脚本正确导入文件(除了我在帖子中犯的错误)。 “,”和“。”之间必须有一些更高级别的窗口/excel设置混合。小数/点微分。 我已将我的德语窗口配置为使用美国标准。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++、写字板、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], ","));
);