matlab - 如何读取文本文件并将数据加载到数组中?
问题描述
我有一个遵循以下格式的 .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**
因此,我想扫描文件并将时间提取到数组中,只要出现在“级别 XXX”行中。在此之后,我想读取对应的级别并保存在另一个数组中以绘制两者的图形。
我尝试了这些功能:textscan
但strfind
它不起作用。你们能帮帮我吗?
解决方案
您可以使用正则表达式:
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'}
您可以在此处查看正则表达式的工作原理。
推荐阅读
- docker - 与 docker-compose.yml 一起使用时未执行 Dockerfile 中的命令
- javascript - 像时刻一样从对象格式化 Luxon 日期
- javascript - 有没有办法使用 Puppeteer 定位特定元素并在将 html 转换为 pdf 时保留 CSS?
- python - 将库导入 Python 文件
- postgresql - postgresql/pgAdmin - 接受 start_date 和 end_date 参数作为查询运行的输入
- visual-studio-code - 该进程试图写入一个不存在的管道
- python - 调试 Python 时调用 Stack empty
- python - 减少创建 BeautifulSoup 对象时的开销
- amazon-aurora - Postgres (AWS Aurora) 未强制执行唯一索引/约束
- java - 如何删除重复项?