Read in only certain numbers from a txt file.

8 ビュー (過去 30 日間)
John Kramer
John Kramer 2021 年 5 月 11 日
回答済み: Scott MacKenzie 2021 年 5 月 11 日
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

採用された回答

Scott MacKenzie
Scott MacKenzie 2021 年 5 月 11 日
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]}

その他の回答 (2 件)

Bob Thompson
Bob Thompson 2021 年 5 月 11 日
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 2021 年 5 月 11 日
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,

カテゴリ

Help Center および File ExchangeText Files についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by