将字符串的csv转换为矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符串的csv转换为矩阵相关的知识,希望对你有一定的参考价值。

我刚刚开始使用Octave(没有资金用于Matlab:/)而且我也是Stack Overflow的新手,所以请原谅我用惯例做的任何错误。

问题:我有一个类似csv的字符串:

Bob Marley,Kobe Bryant,Michael Jackson,Kevin Hart

我想把它变成一个1列矩阵(我需要它在一个矩阵中,以便我可以将它与其他矩阵中的数据结合起来)。

我的方法:我尝试过做textread,但这给了我一个单元格数组。我尝试使用cell2mat将生成的单元格数组转换为矩阵,但我怀疑我不能这样做,因为我的字符串长度各不相同。

如果有必要提供其他信息,请与我们联系。

答案

考虑到您所在的目录中有一个文件“strings.csv”,其中包含您在问题中提到的内容,您的代码应如下所示:

fid=fopen('strings.csv');
A=textscan(fid,'%s','delimiter',',');
A=A{1};
A=cellfun(@(x) string(x),A,'uni',0);
B=[A{:}];
另一答案

你可以使用char数组:

fid = fopen('strings.csv');
A = textscan(fid, '%s', 'delimiter', ',');
B = char(A{:})
[rows, cols] = size(B)

输出如下:

B =
  Bob Marley
  Kobe Bryant
  Michael Jackson
  Kevin Hart

rows =  4

cols =  15

如您所见,B的列数是所有“字符串”的最大长度(Michael Jackson,15)。所有其他“字符串”都会附加空格。

另一答案

如果您的数据很简单,您可以在一行中完成。使用fileread来覆盖所有数据,然后使用strsplit来分隔元素,并使用'转置将其转换为列向量。

x = strsplit(fileread('myfile.txt'), ',')'

如果数据中的逗号周围有空格,请升级到regexp

x = regexp(fileread('myfile.txt'), ' *, *', 'split')

以上是关于将字符串的csv转换为矩阵的主要内容,如果未能解决你的问题,请参考以下文章

利用python将二值csv格式转换为矩阵

使用 Weka Java 代码 - 如何将 CSV(无标题行)转换为 ARFF 格式?

C# 如何将 CSV 转换为数组?

3 列 CSV,到邻接矩阵,到网络图,到 Arcplot

将 d3.csv 方法转换为 d3.csv.parse 方法

将矩阵字符串数组转换为整数矩阵? C++