我有1000个文本文件,并希望从每个文件中读取一个数字。
文本文件格式如下:
af;laskjdf;lkasjda123241234123
$sakdfja;lskfj12352135qadsfasfa
falskdfjqwr1351
##alskgja;lksjgklajs23523,
asdfa#####1217653asl123654fjaksj
asdkjf23s#q23asjfklj
asko3我需要读取每个txt文件中"#####“后面的数字("1217653")。
这个数字将紧跟在所有文本文件中的"#####“后面。
"#####“和后面的数字在每个文件中只出现一次。
clc
clear
MyFolderInfo = dir('yourpath/folder');
fidin = fopen(file_name,'r','n','utf-8');
while ~feof(fidin)
tline=fgetl(fidin);
disp(tline)
end
fclose(fidin); 还没完成呢。我被这个问题困住了,那就是它看不懂后的空格线。
发布于 2016-08-08 08:11:07
这是使用函数regex的另一种方法。这将很容易地提供一种更高级的读取文件的方法,并且不需要一次读取完整的文件。与已经给出的例子不同的是,基本上我逐行读取文件,但由于该示例使用了这种方法,所以我认为值得回答。这将返回所有出现的"#####NUMBER“。
function test()
h = fopen('myfile.txt');
str = fgetl(h);
k = 1;
while (isempty(str) | str ~= -1 ) % Empty line returns empty string and EOF returns -1
res{k} = regexp(str,'#####\d+','match');
k = k+1;
str = fgetl(h);
end
for k=1:length(res)
disp(res{k});
end编辑
使用表达式'#####(\d+)‘和参数'tokens'而不是'match'将实际返回"#####“后面的数字作为字符串。除了展示读取文件的另一种方式外,本文的目的还在于通过一个简单的示例展示如何使用regexp。这两种选择都可以在适当的转换下使用。
https://stackoverflow.com/questions/38820669
复制相似问题