poster
2019-12-14, 20:13
我正在使用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 (http://www.mathworks.com/help/techdoc/ref/textscan.html)文档,可以使用%q格式代替%s格式:
data = textscan(fid,'%q %f','Delimiter',','); 或者,您可以使用%s格式读取字符串,并使用功能STRREP (http://www.mathworks.com/help/techdoc/ref/strrep.html)从data{1}删除"字符:
data{1} = strrep(data{1},'"',''); 然后,您可以使用函数NUM2CELL (http://www.mathworks.com/help/techdoc/ref/num2cell.html)将data{2}的数值数组转换为单元格数组,以便可以将 (http://www.mathworks.com/help/techdoc/math/f1-84864.html)其与data{1}的字符串单元格数组连接 (http://www.mathworks.com/help/techdoc/math/f1-84864.html)起来:
>> data = [data{1} num2cell(data{2})]; data = 'ABC' [0.1560] 'DEF' [0.1250] 'GHI' [0.1010]
更多&回答... (https://stackoverflow.com/questions/5302578)
"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 (http://www.mathworks.com/help/techdoc/ref/textscan.html)文档,可以使用%q格式代替%s格式:
data = textscan(fid,'%q %f','Delimiter',','); 或者,您可以使用%s格式读取字符串,并使用功能STRREP (http://www.mathworks.com/help/techdoc/ref/strrep.html)从data{1}删除"字符:
data{1} = strrep(data{1},'"',''); 然后,您可以使用函数NUM2CELL (http://www.mathworks.com/help/techdoc/ref/num2cell.html)将data{2}的数值数组转换为单元格数组,以便可以将 (http://www.mathworks.com/help/techdoc/math/f1-84864.html)其与data{1}的字符串单元格数组连接 (http://www.mathworks.com/help/techdoc/math/f1-84864.html)起来:
>> data = [data{1} num2cell(data{2})]; data = 'ABC' [0.1560] 'DEF' [0.1250] 'GHI' [0.1010]
更多&回答... (https://stackoverflow.com/questions/5302578)