csv 如何在MATLAB中使用textscan()从.txt文件中读取逗号分隔的值?

wn9m85ua  于 5个月前  发布在  Matlab
关注(0)|答案(2)|浏览(88)

我有一个.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的扩展名。

cnjp1d6j

cnjp1d6j1#

horchler确实是正确的。您首先需要使用fopen打开文件,它提供了一个文件ID /指向实际文件的指针。然后您可以使用textscan。此外,你只需要一个输出变量,因为每一个“列”一旦使用textscan,将作为单独的列放置在单元格数组中。您还需要指定,字符,因为这是用于在列之间分隔。这是通过使用textscan中的Delimiter选项来完成的,并且您指定,字符作为分隔符。然后在使用fclose完成后关闭文件。
因此,您只需这样做:

File = [LOCAL_DIR 'filetoread.txt'];
f = fopen(File, 'r');
C = textscan(f, '%s%f%f', 'Delimiter', ',');
fclose(f);

字符串
请注意,格式化字符串没有空格,因为C标志将负责这项工作。不要添加任何空格。C将包含列的单元格数组。现在,如果您想将列拆分为单独的变量,只需访问正确的单元格:

names = C{1};
num1 = C{2};
num2 = C{3};


这些就是变量现在的样子,把你在文章中提供的文本放到一个名为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);)访问其他两个变量中的值。

eqfvzcg8

eqfvzcg82#

对于拆分以“,”(逗号)分隔的数据/标签,下面以示例显示。
a=“PV_1,SHP_1,BATTERY_1,B_1”
sepColumns = strsplit(temp,[","])
回答:
sepColumns =
1×4串阵列

"PV_LOCATION"    "SHP_LOCATION"    "BATTERY_LOCATION"    "BATTERY_SIZE_KW"

字符串

相关问题