Remove leading blank space from specific lines in .txt files
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi. I need help removing the blank spaces in front of some of the lines in text files.
I want to remove the indent in front of the numbers, but want to leave the indent in front of the words. The begining numbers are the same(i.e., 2500.0, 5000.0, 10000.0, 20000.0, 50000.0), but the numbers following are different. In other words, every line is unique, making it difficult to use something like regexp() to find and replace for large data sets.
For example I have:
Name,proj1;
Edition,52;
Start;
Variable,1;
DataReg,1,0.00,0.00,0.00;
DataAng,1,00.0,00.0;
Area,520.00;
2500.0,180.047,180.997,190.946;
5000.0,80.124,80.552,80.979;
10000.0,40.039,40.252,40.465;
20000.0,20.090,20.200,20.310;
DataAng,2,00.0,00.0;
Area,690.00;
2500.0,130.687,140.407,150.128;
5000.0,70.008,70.377,70.746;
10000.0,30.675,30.868,40.062;
20000.0,10.906,20.006,20.107;
Area,710.00;
2500.0 .......
Also, down the road I may want to remove space in front of selected words too (i.e., Area)
댓글 수: 0
채택된 답변
Mathieu NOE
2021년 2월 10일
hello
my suggestion below , tested on following text (I added a last section for my testing purposes)
Start;
Variable,1;
DataReg,1,0.00,0.00,0.00;
DataAng,1,00.0,00.0;
Area,520.00;
2500.0,180.047,180.997,190.946;
5000.0,80.124,80.552,80.979;
10000.0,40.039,40.252,40.465;
20000.0,20.090,20.200,20.310;
DataAng,2,00.0,00.0;
Area,690.00;
2500.0,130.687,140.407,150.128;
5000.0,70.008,70.377,70.746;
10000.0,30.675,30.868,40.062;
20000.0,10.906,20.006,20.107;
Area,710.00;
2500.0,130.687,140.407,150.128;
5000.0,70.008,70.377,70.746;
10000.0,30.675,30.868,40.062;
20000.0,10.906,20.006,20.107;
Location,710.00;
2500.0,130.687,140.407,150.128;
5000.0,70.008,70.377,70.746;
10000.0,30.675,30.868,40.062;
20000.0,10.906,20.006,20.107;
Filename = 'Document1.txt';
fid = fopen(Filename);
tline = fgetl(fid);
selected_words = {'Area'}; % test 1
% selected_words = {'Area','Location'}; % test 2
k = 0;
while ischar(tline)
% check if first string is numeric and deblank
out = split(tline,',');
k = k + 1;
new_line{k} = tline;
if ~isempty(str2num(out{1}))
new_line{k} = strip(tline,'left'); % remove blanks left side (leading)
else
for ci = 1:numel(selected_words)
if contains(tline,selected_words(ci))
new_line{k} = strip(tline,'left'); % remove blanks left side (leading)
end
end
end
tline = fgetl(fid);
end
fclose(fid);
writecell(new_line', 'out.txt',"QuoteStrings",0);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!