编辑列表中的字符串我正在制作一个列表框,在脚本中使用它来选择我想要分析的批次号。 我想根据文件夹中的文件名制作批号列表。 我不知道如何将文件名编辑为仅批号。
这就是文件名列表的样子
"data_20229.csv", "data_20230.csv", "data_20231.csv", "data_20232.csv",
"data_20236.csv", "data_20237.csv", "data_20238.csv", "data_20239.csv",
"data_20240.csv", "data_20241.csv", "data_20242.csv", "data_20243.csv",
"data_20244.csv", "data_20245.csv", "data_20247.csv", "data_20248.csv",
"data_20251.csv", "data_20252.csv", "data_20253.csv", "data_20254.csv",
"data_20255.csv", "data_20256.csv", "data_20257.csv", "data_20258.csv",
"data_20259.csv", "data_20260.csv", "data_20261.csv", "data_20262.csv",
"data_20263.csv", "data_20264.csv", "data_20265.csv", "data_20266.csv",
"data_20267.csv", "data_20268.csv", "data_20269.csv", "data_20270.csv"
我希望列表像这样结束
"20229", "20230", "20231", "20232", "20233", "20234", "20235", "20236",
"20237", "20238", "20239", "20240", "20241", "20242", "20243", "20244", "20245",
"20246", "20247", "20248", "20249", "20250", "20251", "20252", "20253", "20254",
"20255", "20256", "20257", "20258", "20259", "20260", "20261", "20262", "20263",
"20264", "20265", "20266", "20267", "20268", "20269", "20270"
自动化和脚本编写内容组织数据混合和清理回复:编辑列表中的字符串亲爱的@ealindahl ,
句点属于缺失值,即正则表达式未找到匹配项。
您可以在后面删除它们,或者在列表生成期间避免它们,并且必须稍微更改循环。
删除它们后缀的一个简单方法如下(第一种方法通过字符串操作,第二种方法通过循环)。
BR
names default to here(1);
list = {., ., ., ., ., ., ., "20131", "20132", "20133"};
new_list = parse(substitute(char(list),".,", ""));
show (list);
show (new_list);
new_list={};
for (i=1, i<= n items(list), i++,
if (!is missing(list[i]), new_list = insert(new_list, list[i]));
);
show(new_list);
回复:编辑列表中的字符串谢谢乔治! 这真的很好用。 我以前从未使用过正则表达式,我尝试对其进行一些谷歌搜索来解决这一问题。 我在同一文件夹中确实有一些垃圾文件,其中不包含任何数字。因此这些文件的名称不会出现在列表中,但句点会出现在列表中。 我该如何摆脱经期?
看起来像这样 {., ., ., ., ., ., ., "20131", "20132", "20133",}
回复:编辑列表中的字符串此方法不使用 for 循环。
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
str = char(examplelist);
newstr = substitute(str, "data_", "", ".csv", "");
new_list = parse(newstr);
show( new_list );回复:编辑列表中的字符串谢谢,吉姆。
对于此类目的,Word 函数是一个很好且易于理解的函数。
更通用的方法可能是使用正则表达式,
所以只需将 Jims Script 的一行替换为
exampleList[i] = regex(exampleList[i], "([0-9]+)", "\1")
将搜索第一次出现的数字。
当数据不像本例中那样干净时,这可能很有用。 正则表达式非常强大。
回复:编辑列表中的字符串最简单的方法是使用 Word() 函数。
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
For( i = 1, i <= N Items( exampleList ), i++,
exampleList[i] = Word( 2, exampleList[i], "_." )
);
show( exampleList );
有关 Word() 函数的文档可以在脚本索引中找到。