Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在使用MATLAB打开一批包含列标题和数据的CSV文件(使用importdata函数),然后我对数据进行了一些操作,并使用dlmwrite函数将标题和数据写入了新的CSV文件中。我使用了-append和newline的属性dlmwrite添加文本/数据的每一行上一个新行。
我的每个新CSV文件的末尾都有一个空行,而当我读入数据之前,该空行不存在了……而且我在dlmwrite最终调用中没有使用newline 。 有谁知道如何避免将此空白行写入CSV文件的末尾? 编辑5/18/10 1:35 PM CST 添加了有关每个请求的代码和文本文件的信息...在执行以下过程之后,您会注意到新文本文件中最后一行的末尾似乎有回车符。 考虑一个名为“ textfile.txt”的文本文件,如下所示: Column1, Column2, Column3, Column4, Column 5 1, 2, 3, 4, 5 1, 2, 3, 4, 5 1, 2, 3, 4, 5 1, 2, 3, 4, 5 1, 2, 3, 4, 5 这是我正在使用的代码示例: % import data importedData = importdata('textfile.txt'); % manipulate data importedData.data(:,1) = 100; % store column headers into single comma-delimited % character array (for easy writing later) columnHeaders = importedData.textdata{1}; for counter = 2:size(importedData.textdata,2) columnHeaders = horzcat(columnHeaders,',',importedData.textdata{counter}); end % write column headers to new file dlmwrite('textfile_updated.txt',columnHeaders,'Delimiter','','newline','pc') % append all but last line of data to new file for dataCounter = 1:(size(importedData.data,2)-1) dlmwrite('textfile_updated.txt',importedData.data(dataCounter,:),'Delimiter',',','newline','pc','-append') end % append last line of data to new file, not % creating new line at end dlmwrite('textfile_updated.txt',importedData.data(end,:),'Delimiter',',','-append') 回答: 如果未在DLMWRITE中指定'newline'选项,则即使在Windows计算机上,MATLAB也会使用UNIX样式的行尾字符(LF,十六进制代码\ x0A)。但这确实会换行。 如果指定“换行符”,“ pc”,则它将DOS行尾字符(CRLF,\ x0D0A用十六进制代码表示)。 记事本仅了解DOS行尾。写字板都能理解。至少在我的机器上情况如何。 我建议您保持一致,并对所有行使用相同的“换行”选项。这样,您还将避免for循环。然后尝试在MATLAB编辑器中打开输出文件。 为什么您根本不需要行尾字符?如果这是您需要的,请使用FPRINTF函数。要执行此操作,您必须首先使用FOPEN打开文件。重写输出的整个代码可能会更好。 像这样: fid = fopen('textfile_updated.txt','w'); fprintf(fid,'%s\r\n',columnHeaders); %# \r\n for PC end-of-line fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d\r\n'],importedData.data(1:end-1,:)'); fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d'],importedData.data(end,:)); fclose(fid); 更多&回答... |
![]() |
![]() |