0

我有一个包含数字、日期和文本的 CSV 文件。我必须提取包含文本的列。

例如,示例 csv 文件看起来像

1-1-2000,1,2.3,TRUE    
2-1-2000,1,2.3,FALSE
  1. 我想提取包含 TRUE/FALSE 值的列。

  2. 我想将 TRUE 转换为 1,将 FALSE 转换为 0。

请建议一些功能和示例代码来执行此操作

4

1 回答 1

2

你可以试试这个:

[~,~,~,bools] = textread('filename.csv', '%s%d%f%s', 'delimiter', ',');

bools = cellfun(@strtrim, bool, 'uniformoutput', false);
bools = strcmp(bools, 'TRUE');

strtrim如果您事先知道没有任何尾随空格,则可能不需要该行。行为strcmp所有与字面值进行字符串比较的条目输出一个逻辑数组TRUE,这意味着所有其他条目都是 false。意义:

1-1-2000,1,2.3,TRUE    
2-1-2000,1,2.3,BANANAS

将产生相同的逻辑向量。如果您还想明确比较字符串文字FALSE,请使用以下内容:

a = NaN(size(bools));
a(strcmp(bools, 'TRUE'))  = 1;
a(strcmp(bools, 'FALSE')) = 0;
if ~any(isnan(a))
    bools = logical(a);
    clear a
else
    %# handle the error
end
于 2012-10-08T05:03:26.930 回答