如何读取文本文件并将数据加载到数组?
How can i read text file and load data to an array?
我有一个遵循以下格式的 .txt 文件:
00:00.300 ID:4 zzzzzzzzzzz
00:02.155 ID:4 aaaaaaaaaaaaa
00:04.662 ID:4 dsadasd
**00:32.283** ID:4 level **790**
00:32.155 ID:4 Sfghgfs
00:32.200 ID:4 Tsdfsdfdfsff
**00:32.205** ID:4 level **640**
00:32.206 ID:4 Sadssd
00:32.208 ID:4 asdasgsfgsgsagsa
00:32.210 ID:4 adasgx
00:32.212 ID:4 Masddasdas.
**01:40:40.698** ID:4 level **500**
所以,我想扫描文件并在行 "level XXX" 中出现时将时间提取到数组中。
在此之后,我想读取相应的级别并保存在另一个数组中以两者绘制图形。
我尝试了以下功能:textscan
和 strfind
但它不起作用。
你们能帮帮我吗?
这仅显示 time_stamp 的值和级别。之后随意将它们传递给任何你想要的东西。
ff = fopen('filename.txt');
while ~feof(ff)
A = fgetl(ff);
if contains(A,'level')
time_stamp = sscanf(A,'%s ID:4 break_here') % the 'break_here' string is intended to not match the text in the file
level = sscanf(A,strcat(time_stamp,' ID:4 level %f'))
end
end
fclose(ff);
您可以使用正则表达式:
raw = fileread('mytext.txt');
tokens = regexp(raw,'((?:\d{2}:)?\d{2}:\d{2}\.\d{3})[^\n]+level[^\d]+(\d{3})','tokens');
tokens = [tokens{:}];
timestamps = tokens(1:2:end);
levels = tokens(2:2:end);
检查输出:
>> timestamps
timestamps =
1×3 cell array
{'00:32.283'} {'00:32.205'} {'01:40:40.698'}
>> levels
levels =
1×3 cell array
{'790'} {'640'} {'500'}
您可以看到正则表达式是如何工作的here。
我有一个遵循以下格式的 .txt 文件:
00:00.300 ID:4 zzzzzzzzzzz
00:02.155 ID:4 aaaaaaaaaaaaa
00:04.662 ID:4 dsadasd
**00:32.283** ID:4 level **790**
00:32.155 ID:4 Sfghgfs
00:32.200 ID:4 Tsdfsdfdfsff
**00:32.205** ID:4 level **640**
00:32.206 ID:4 Sadssd
00:32.208 ID:4 asdasgsfgsgsagsa
00:32.210 ID:4 adasgx
00:32.212 ID:4 Masddasdas.
**01:40:40.698** ID:4 level **500**
所以,我想扫描文件并在行 "level XXX" 中出现时将时间提取到数组中。 在此之后,我想读取相应的级别并保存在另一个数组中以两者绘制图形。
我尝试了以下功能:textscan
和 strfind
但它不起作用。
你们能帮帮我吗?
这仅显示 time_stamp 的值和级别。之后随意将它们传递给任何你想要的东西。
ff = fopen('filename.txt');
while ~feof(ff)
A = fgetl(ff);
if contains(A,'level')
time_stamp = sscanf(A,'%s ID:4 break_here') % the 'break_here' string is intended to not match the text in the file
level = sscanf(A,strcat(time_stamp,' ID:4 level %f'))
end
end
fclose(ff);
您可以使用正则表达式:
raw = fileread('mytext.txt');
tokens = regexp(raw,'((?:\d{2}:)?\d{2}:\d{2}\.\d{3})[^\n]+level[^\d]+(\d{3})','tokens');
tokens = [tokens{:}];
timestamps = tokens(1:2:end);
levels = tokens(2:2:end);
检查输出:
>> timestamps
timestamps =
1×3 cell array
{'00:32.283'} {'00:32.205'} {'01:40:40.698'}
>> levels
levels =
1×3 cell array
{'790'} {'640'} {'500'}
您可以看到正则表达式是如何工作的here。