delete consecutive commas in txt file

3 views (last 30 days)
I have the next txt file that has more than one ',' between numbers and i only want 1 comma between my numbers
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0.00443747926701899,0.0415007916135113,0.0507606123682882,,0.118547629187242,,,,,,,,,0.300291185258514,,,,,,,,,,,,,,,,,,,,0.410219670837715,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.698099828162265
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
  2 Comments
george korris
george korris on 12 Sep 2022
@Stephen23thank you for your time.
remove them!

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 12 Sep 2022
Edited: Star Strider on 12 Sep 2022
Use readmatrix with additional name-value pair arguments to select the delimiter and combine multiple consecutive delimiters. See the documentation section on Text Files Only for details on these and other Name-Value Arguments.
M1 = readmatrix('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1122645/ca.txt', 'Delimiter',',', 'ConsecutiveDelimitersRule','join', 'LeadingDelimitersRule','ignore')
M1 = 8×9
0.0044 0.0415 0.0508 0.1185 0.1397 0.2522 0.3003 0.4102 0.6981 0.0361 0.1039 0.1559 0.1819 0.2685 0.4436 0.5813 0.8723 1.2182 0.0766 0.2214 0.2013 0.3533 0.5310 0.9182 1.1550 1.4976 1.9698 0.0721 0.5354 0.6176 0.6157 1.2760 1.7109 1.9629 2.4014 2.9319 0.2162 0.2679 1.3769 1.7134 2.1104 2.6804 3.0724 3.2769 4.0396 1.4989 1.6092 2.2079 2.4976 2.7068 3.8842 3.8599 4.3714 4.6691 1.7589 2.4418 2.3176 3.3207 3.0543 4.3723 4.3590 4.6367 4.8807 0.1454 2.1400 2.5672 3.5504 3.3989 4.4617 4.5724 5.0063 4.9371
.
  4 Comments
Star Strider
Star Strider on 12 Sep 2022
As always, my pleasure!
Thank you!

Sign in to comment.

More Answers (2)

Simon Chan
Simon Chan on 12 Sep 2022
May be this:
rawdata = readlines('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1122645/ca.txt');
iwant = [];
for k = 1:length(rawdata)
data = str2double(strsplit(rawdata{k},','));
if ~all(isnan(data))
iwant = [iwant;data];
end
end
iwant
iwant = 8×9
0.0044 0.0415 0.0508 0.1185 0.1397 0.2522 0.3003 0.4102 0.6981 0.0361 0.1039 0.1559 0.1819 0.2685 0.4436 0.5813 0.8723 1.2182 0.0766 0.2214 0.2013 0.3533 0.5310 0.9182 1.1550 1.4976 1.9698 0.0721 0.5354 0.6176 0.6157 1.2760 1.7109 1.9629 2.4014 2.9319 0.2162 0.2679 1.3769 1.7134 2.1104 2.6804 3.0724 3.2769 4.0396 1.4989 1.6092 2.2079 2.4976 2.7068 3.8842 3.8599 4.3714 4.6691 1.7589 2.4418 2.3176 3.3207 3.0543 4.3723 4.3590 4.6367 4.8807 0.1454 2.1400 2.5672 3.5504 3.3989 4.4617 4.5724 5.0063 4.9371
  1 Comment
george korris
george korris on 12 Sep 2022
Hi @Simon Chan when i run your code in my pc i get the following error:
Unrecognized function or variable 'readlines'.
Thank you for your time!

Sign in to comment.


Mathieu NOE
Mathieu NOE on 12 Sep 2022
hello
maybe not the best code but seems to do the job !
filename = 'ca.txt';
a = readlines(filename);
[m,~] = size(a);
count = 0;
for ci = 1:m
current_line = char(a(ci,:));
out_comas= strfind(current_line,',');
if numel(out_comas) < numel(current_line) % keep this line
count = count+1;
% remove extra comma separators
out_comas= strfind(current_line,',');
d = [0 diff(out_comas)];
ind = find(d == 1);
line_out = current_line;
line_out(out_comas(ind)) = [];% remove extra comma separators
C{count,1} = line_out;
end
end
% export to txt file
writecell(C,'ca_out.txt',"QuoteStrings",false)
  5 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!