如何使用 textscan() 从 MATLAB 中的 .txt 文件读取逗号分隔值?
How do I read comma separated values from a .txt file in MATLAB using textscan()?
我有一个 .txt 文件,其中的行由三个元素组成,一个单词和两个数字,以逗号分隔。
例如:
a,142,5
aa,3,0
abb,5,0
ability,3,0
about,2,0
我想读取文件并将单词放在一个变量中,第一个数字放在另一个变量中,第二个数字放在另一个变量中,但我在使用 textscan
时遇到了问题。
这是我目前拥有的:
File = [LOCAL_DIR 'filetoread.txt'];
FID_File = fopen(File,'r');
[words,var1,var2] = textscan(File,'%s %f %f','Delimiter',',');
fclose(FID_File);
我似乎无法弄清楚如何在 textscan
中使用定界符。
horchler 确实是正确的。您首先需要使用 fopen
which provides a file ID / pointer to the actual file. You'd then use this with textscan
. Also, you really only need one output variable because each "column" will be placed as a separate column in a cell array once you use textscan
. You also need to specify the delimiter to be the ,
character because that's what is being used to separate between columns. This is done by using the Delimiter
option in textscan
and you specify the ,
character as the delimiter character. You'd then close the file after you're done using fclose
.
打开文件
因此,您只需这样做:
File = [LOCAL_DIR 'filetoread.txt'];
f = fopen(File, 'r');
C = textscan(f, '%s%f%f', 'Delimiter', ',');
fclose(f);
请注意,格式化字符串没有空格,因为分隔符标志会处理这项工作。不要添加任何空格。 C
将包含一个列元胞数组。现在,如果您想将列拆分为单独的变量,只需访问正确的单元格:
names = C{1};
num1 = C{2};
num2 = C{3};
通过将您在 post 中提供的文本放入名为 filetoread.txt
:
的文件中,这些变量现在看起来像这样
>> names
names =
'a'
'aa'
'abb'
'ability'
'about'
>> num1
num1 =
142
3
5
3
2
>> num2
num2 =
5
0
0
0
0
请注意,names
是一个名称元胞数组,因此只需执行 n = names{ii};
即可访问正确的名称,其中 ii
是您要访问的名称。您将使用普通索引符号(即 n = num1(ii);
或 n = num2(ii);
)访问其他两个变量中的值。
我有一个 .txt 文件,其中的行由三个元素组成,一个单词和两个数字,以逗号分隔。
例如:
a,142,5
aa,3,0
abb,5,0
ability,3,0
about,2,0
我想读取文件并将单词放在一个变量中,第一个数字放在另一个变量中,第二个数字放在另一个变量中,但我在使用 textscan
时遇到了问题。
这是我目前拥有的:
File = [LOCAL_DIR 'filetoread.txt'];
FID_File = fopen(File,'r');
[words,var1,var2] = textscan(File,'%s %f %f','Delimiter',',');
fclose(FID_File);
我似乎无法弄清楚如何在 textscan
中使用定界符。
horchler 确实是正确的。您首先需要使用 fopen
which provides a file ID / pointer to the actual file. You'd then use this with textscan
. Also, you really only need one output variable because each "column" will be placed as a separate column in a cell array once you use textscan
. You also need to specify the delimiter to be the ,
character because that's what is being used to separate between columns. This is done by using the Delimiter
option in textscan
and you specify the ,
character as the delimiter character. You'd then close the file after you're done using fclose
.
因此,您只需这样做:
File = [LOCAL_DIR 'filetoread.txt'];
f = fopen(File, 'r');
C = textscan(f, '%s%f%f', 'Delimiter', ',');
fclose(f);
请注意,格式化字符串没有空格,因为分隔符标志会处理这项工作。不要添加任何空格。 C
将包含一个列元胞数组。现在,如果您想将列拆分为单独的变量,只需访问正确的单元格:
names = C{1};
num1 = C{2};
num2 = C{3};
通过将您在 post 中提供的文本放入名为 filetoread.txt
:
>> names
names =
'a'
'aa'
'abb'
'ability'
'about'
>> num1
num1 =
142
3
5
3
2
>> num2
num2 =
5
0
0
0
0
请注意,names
是一个名称元胞数组,因此只需执行 n = names{ii};
即可访问正确的名称,其中 ii
是您要访问的名称。您将使用普通索引符号(即 n = num1(ii);
或 n = num2(ii);
)访问其他两个变量中的值。