Matlab 如何处理具有不同分隔符数的单元格数组
使用拆分时出错 文本的元素5包含4个分隔符,而前面的元素有5个分隔符。所有元素必须包含相同数量的分隔符Matlab 如何处理具有不同分隔符数的单元格数组,matlab,Matlab,使用拆分时出错 文本的元素5包含4个分隔符,而前面的元素有5个分隔符。所有元素必须包含相同数量的分隔符 '15:54:58.882',tscompute1',524288',字节,“英特尔” “15:54:58.882”,tscompute1,“294912”,字节,“英特尔rdt” “15:54:58.882”,tscompute1,“786432”,字节,“英特尔rdt” “15:54:58.882”,tscompute1,“491520”,字节,“英特尔rdt” “15:54:58.882
'15:54:58.882',tscompute1',524288',字节,“英特尔”
“15:54:58.882”,tscompute1,“294912”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,“786432”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,“491520”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,0,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,0,字节,“英特尔rdt”
在使用split()函数拆分具有不同分隔符数的字符串单元格数组时,出现了如上所述的错误。提供了一个示例数据。您的问题是(我假设)s4
是您的单元格,因此您需要头韵地访问s4
中的每个字符串(使用大括号{}
)
是split
的MATLAB参考文档。要了解更多有关单元如何工作的信息,请阅读MATLAB文档页面
但是,如果您的单元是Mx1,您所需要做的就是将单元转换为1xM,以便将其完全加载到split
s4 = tranpose(s4);
str = split(s4, ",");
根据您引用的文档,
split
可以将单元格数组作为输入。非常抱歉。你说得对。但是,您仍然可以使用上面的方法迭代每个单元格值以获取字符串……我认为这更像是一个“regexp”问题,Yogesh希望避免为这个灰色逗号拆分字符串:“15:54:58.882”,tscompute1,“491,
520”,bytes,“intel\u rdt”“@obchardon是的,这就是我想要的。你的数据来自哪里?如果它是一个文件,那么您应该使用readtable
读取它,它将自动为您处理拆分。您会发现第三列不是字符的数字,但您可以自己转换(无论如何,您都需要使用上述方法进行此操作。数据从系统活动收集并存储在弹性搜索数据库中。此外,readtable无法工作,因为数据位于csv文件中。如果您以前可以尝试解决此问题,则您的数据格式很差。但如果不是您的数据,则可以使用regexp拆分:B=regexp(string(s4),,(?!\d{2}),'split')
@obchardon数据格式不在我手中。我希望能事先格式化。不过,我会试试你的建议。@Yogesh,readtable
对于csv
文件来说效果非常好。
str = [];
for i = 1:length(s4)
str = [str; split(s4{i}, ",")];
end
s4 = tranpose(s4);
str = split(s4, ",");