我正在使用TextScan读取文件的数据。正在读取的数据是:

"ABC",0.156
"DEF",0.125
"GHI",0.101

我的代码是 - data = textscan(fid, '%s %f', 'Delimiter', ',');

数据{1}作为

'"ABC"'
'"DEF"'
'"GHI"'

我希望数据{1}为 -

'ABC'
'DEF'
'GHI'

最后,我怎么能得到答案

data = 
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];

而不是使用数据{1}和数据{2}。谢谢!

有帮助吗?

解决方案

实际上有两种方法可以忽略 " 读取字符串时的字符。按照 textscan 文档,您可以使用 %q 格式而不是 %s 格式:

data = textscan(fid,'%q %f','Delimiter',',');

或者您可以使用 %s 格式并删除 " 字符来自 data{1} 使用该功能 strrep:

data{1} = strrep(data{1},'"','');

那么您可以使用该功能 num2cell 转换数字值的数组 data{2} 到一个单元格数组,以便您可以 加入 它带有细胞的字符串阵列 data{1}:

>> data = [data{1} num2cell(data{2})];

data =

    'ABC'    [0.1560]
    'DEF'    [0.1250]
    'GHI'    [0.1010]

其他提示

为了摆脱双引号

data = textscan(fid, '%q %f', 'Delimiter', ',');

在哪里 %q 做魔术。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top