【问题标题】:Matlab, Comma-separated string to Cell when it has blank e.g. 1,2,3,[blank],[blank]Matlab,当单元格有空白时,逗号分隔的字符串,例如1,2,3,[空白],[空白]
【发布时间】:2018-08-18 06:27:13
【问题描述】:

在 Matlab 中,

1. strsplit('a,b,c,', ',')
2. strsplit('a,b,c,,,', ',')

1和2的结果都一样,

{{'a'}, {'b'}, {'c'}, {0×0 char}}

不过我想吃

{{'a'}, {'b'}, {'c'}, {0×0 char}, {0×0 char}, {0×0 char}} 

从一个字符串

'a,b,c,,,'.

我在 strsplit 函数中尝试了“CollapseDelimiters”选项。 但它不适用于尾巴。

【问题讨论】:

  • strsplit('a,b,c,,,', ',','CollapseDelimiters',0) 在我的机器上给出正确的输出...?
  • @UnbearableLightness 啊。你是对的。数据格式错误。感谢您对愚蠢问题的友好回答。

标签: matlab csv delimiter strsplit


【解决方案1】:

正如 UnbearableLighness 建议的那样,CollapseDelimiters 有效,但您也可以使用 split

>> strsplit('a,b,c,,,', ',','CollapseDelimiters',false)

ans =

  1×6 cell array

    {'a'}    {'b'}    {'c'}    {0×0 char}    {0×0 char}    {0×0 char}


>> split('a,b,c,,,', ',')'

ans =

  1×6 cell array

    {'a'}    {'b'}    {'c'}    {0×0 char}    {0×0 char}    {0×0 char}

由于性能提升,我建议拆分

function profFunc

    n = 1e5;

    tic
    for i = 1:n
        x = strsplit('a,b,c,,,', ',','CollapseDelimiters',false);
    end
    toc

    tic
    for i = 1:n
        x = split('a,b,c,,,', ',');
    end
    toc
end

>> profFunc
Elapsed time is 31.044903 seconds.
Elapsed time is 1.761662 seconds.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2018-11-14
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多