String Matlab代码-从.CSV中提取字符串形式的数值数据时,保持前导零
我有CSV格式的数据。数据包含文本格式的数值,但没有任何撇号String Matlab代码-从.CSV中提取字符串形式的数值数据时,保持前导零,string,matlab,csv,import,xlsread,String,Matlab,Csv,Import,Xlsread,我有CSV格式的数据。数据包含文本格式的数值,但没有任何撇号 我尝试使用xlsread导出数据,但是Matlab会自动删除前导零。是否可以强制Matlab将其读取为字符串以保持前导零?xlsread有三个输出,第三个输出用于保存原始数据。使用第三个输出,您将在那里找到文本。然后可以使用str2num将文本转换为数字数据 如果是CSV文件,不要使用xlsread。这是用于Excel(.xls/.xlsx)文件的。如果基本数据实际上主要在Excel文件中,则不要将其保存到CSV;直接读取Excel
我尝试使用xlsread导出数据,但是Matlab会自动删除前导零。是否可以强制Matlab将其读取为字符串以保持前导零?xlsread有三个输出,第三个输出用于保存原始数据。使用第三个输出,您将在那里找到文本。然后可以使用str2num将文本转换为数字数据 如果是CSV文件,不要使用
xlsread
。这是用于Excel(.xls
/.xlsx
)文件的。如果基本数据实际上主要在Excel文件中,则不要将其保存到CSV;直接读取Excel文件
您必须使用较低级别的读取例程,如textscan
或fscanf
,才能在中读取此内容。问题是CSV文件实际上并没有以不同的方式表示字符串和数字:CSV文件只包含文本数据,所以像Matlab这样工作方式类似数字的程序必须提供一些“魔法”来决定什么是数字,并将这些字符串转换成数字。他们认为你不关心像前导零这样的东西,所以他们把它抽象掉了。但在这种情况下,你确实关心,所以你必须绕过他们的魔法
别担心textscan
和fscanf
易于使用
这样做:
fid = fopen('myfile.csv');
col_vals = textscan(fid, '%s');
orig_policy_num = col_vals{1};
fclose(fid);
术语说明:您说“数据包含数值”,但数值表示数字,前导零对数字不重要;这只是不同风格的问题,相同的值可以用不同的风格书写。但是你关心前导零。这意味着这实际上是文本数据,而不是数字数据。您可能需要使用类似于
textscan
的工具,以便更精确地控制格式。您可以将一些实际的CSV示例数据作为文本共享吗?您发布的屏幕截图看起来像Excel屏幕截图,Excel会进行奇怪的格式化操作,使原始基础输入格式变得模糊。我尝试过这种方法,但第三个/原始数据也会将其检测为数字并自动删除前导零。