MATLAB Answers

Read in only certain numbers from a txt file.

2 views (last 30 days)
Hello All,
I have a bunch of text files where i only need to extract the 11 digit numbers from the txt file. I am currently struggling to only pull those numbers out. I am able to pull out either all the data, all the numbers but not the exact numbers I want. I attached a example of what the text documents I am trying to extract from. I am basically just trying to create a cell array of the 11 digit numbers.
Thanks
J

Accepted Answer

Scott MacKenzie
Scott MacKenzie on 11 May 2021
This creates a cell array of the 11-digit numbers in your file...
fileName = 'Example.txt';
n = [];
fid = fopen(fileName);
while ~feof(fid)
line = fgetl(fid);
if length(line) == 11
n = [n; str2double(line) ];
end
end
fclose(fid);
c = num2cell(n)
Output:
c =
9×1 cell array
{[12345678901]}
{[12345678902]}
{[12345678903]}
{[12345678904]}
{[12345678905]}
{[12345678906]}
{[12345678907]}
{[12345678908]}
{[12345678909]}

More Answers (2)

Bob Thompson
Bob Thompson on 11 May 2021
What does your code look like so far? What are you using to extract the numbers?
Off the top of my head, I recommend using something like regexp to extract the numbers. Here's a quick swag at what it would look like:
11nums = regexp('Example.txt','/D(/d/d/d/d/d/d/d/d/d/d/d)/D','tokens');
This has not been tested.
In theory it looks for an isolated set of numbers, with 11 digits.

Thomas Jensen
Thomas Jensen on 11 May 2021
Hi John,
Unfotunatelly your input file does not follow a pattern, so your script needs to read line-by-line and check if the line is an array of characters containing 11 digits.
Best regards,

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!