MATLAB提取txt文本文档中特定关键字后的数字信息

文本文档的信息多是按照行的格式读写的,因此在读取时对提取到每行的文本信息进行关键字的对比找到指定行,然后利用正则表达式提取相应的信息即可。

文本信息示例

positions bitstream size 550216 B (12.5996 bpp)
positions processing time (user): 8.203 s
colors bitstream size 9459 B (0.216605 bpp)
colors processing time (user): 5.984 s
reflectances bitstream size 1706 B (0.0390663 bpp)
reflectances processing time (user): 0.64 s

1. MATLAB读取文本文档

fidin = fopen('encoder.txt','r');
while ~feof(fidin)
    tline = fgetl(fidin);
end

2. strncmp函数定位行信息

strncmp(tline,'positions bitstream',15)

对比前两个字符串中前15个字符是否一致,一致返回非零结果,可根据此结果执行信息提取操作。

if strncmp(tline,'positions bitstream',15)
   Gbit = regexp(tline,'\d*\.?\d*','match');
end

3. strfind函数定位行信息

if strfind(tline,'h.r,PSNR   F')
   hRpsnr = regexp(tline,'\d*\.\d*','match');
end

strfind会在tline查找是否含有用户输入的字符串,并返回第一个字母在tline的位置,同样可以作为进一步操作的判据。

4. regexp正则表达式

regexp(tline,'\d*\.\d*','match');

regexp(tline,'\d*\.?\d*','match');

第一个提取tline中的浮点数数值,第二个提取tline中整数、浮点数两种数值,可根据数据类型自行选择。

例如:

tline = 'positions bitstream size 550216 B (12.5996 bpp)';
Gbit1 = regexp(tline,'\d*\.\d*','match');
Gbit2 = regexp(tline,'\d*\.?\d*','match');

Gbit1 = {'12.5996'}

Gbit2 = {'550216' '12' '5996'}

正则表达式返回的结果为元胞数组类型,所有的数据都是字符串类型,如果要对数据进行操作可以利用str2num转换为数值类型,如果要写入Excel文档则需要通过num2str再转换回来。

  • 8
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值