Grep a numeric array from a text file

6 views (last 30 days)
Louis Vallance
Louis Vallance on 18 Aug 2017
Commented: Louis Vallance on 18 Aug 2017
Dear all,
I have a text file which contains numeric data enclosed with square brackets and parentheses. The data delimiter is a comma. The contents of the file look like this:
[(1, 2, 3), (4, 5, 6, 7), (8, 9)]
The values themselves are arbitrary; I chose ascending integers for convenience. The length of each set of values enclosed by parentheses is arbitrary and could be different every time the file is written. The parentheses always enclose at least one value.
I would like to read the text file so that I get an array like this:
values =
1 2 3 4 5 6 7 8 9
whos values
Name Size Bytes Class Attributes
values 1x9 72 double
So far, I have loaded the text file so that I have a structure containing the text data. I am having trouble converting the data to an array, but I'm guessing that I need regexp().
This is what I've tried:
fileName = sprintf('..\data.dat', pwd);
data= importdata(fileName, ',');
data= cell2mat(data);
% Arrange the sub (node) IDs
values = regexp(data, '), (', 'split');
This does something vaguely close to what I need, but it's not correct. I have searched the forums but can't find anything similar to this text format.
Any help would be greatly appreciated, thanks!
Best regards,
Louis Vallance
  2 Comments
Louis Vallance
Louis Vallance on 18 Aug 2017
Oops, that was a typo :) I don't have a problem opening the file so that line can be ignored.

Sign in to comment.

Accepted Answer

Stephen
Stephen on 18 Aug 2017
Edited: Stephen on 18 Aug 2017
>> str = '[(1, 2, 3), (4, 5, 6, 7), (8, 9)]';
>> str2double(regexp(str,'\d+','match'))
ans =
1 2 3 4 5 6 7 8 9
and to read the data from the file you could simply use fileread:
str = fileread(...)

More Answers (0)

Community Treasure Hunt

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

Start Hunting!