【发布时间】:2010-05-18 15:06:25
【问题描述】:
我正在使用 MATLAB 打开一批包含列标题和数据的 CSV 文件(使用 importdata 函数),然后我稍微操作数据并使用 @987654322 将标题和数据写入新的 CSV 文件@ 功能。我正在使用dlmwrite 的-append 和newline 属性在新行上添加每一行文本/数据。
我的每个新 CSV 文件的末尾都有一个空行,而在我读入数据之前,这个空行不存在……而且我在最后一次调用 @987654327 时没有使用 newline @。
有谁知道如何避免将这个空白行写到 CSV 文件的末尾?
编辑于 2010 年 5 月 18 日下午 1:35 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 的“换行符”选项保留相同(并避免 for 循环)。我认为关键是——你使用什么操作系统来运行代码,以及查看输出文件是什么?
-
我使用 Windows XP 运行代码,使用记事本/写字板查看输出文件。当我使用写字板查看文件时,文件末尾只有一个空行。奇怪的是,当我使用记事本查看文件时,文件末尾有一个空行,然后在最后一行数据的末尾有一些未知的ASCII字符(一个矩形)。当我删除未知的 ASCII 字符时,空行也被删除。这让我觉得回车被无意中放在了文件的末尾。