页脚中提取数据从csv头

15的观点(30天)
我有一组non-comma-delimited的csv文件页眉和页脚文本(公司样板)。页脚文本似乎是预防 readtable 从解析文件,随着数据的行数的变化从一个csv到另一个,我不能硬编码的数据范围。
有办法打开这种文件,找到一个spefic字符串,并使用的行索引绑定readtable或类似的功能?另外,什么是最好的方法在这种情况下提取用逗号分隔的数据?
5个评论
高贵的沙玛
高贵的沙玛 2022年6月22日
你能分享测试的示例文件,以提供一个适当的建议吗

登录置评。

接受的答案

每•艾萨克森
每•艾萨克森 2022年6月22日
我在您的文件取代了“数据”“3.14”和我跳过了两列标题行,因为他们是奇怪的。
这是一个oldtimers解决方案。(唯一的问题是获得正确的列数)。
fid = fopen (“FormatExample.csv”,“r”);
cac = textscan (fid,“% % % f % f % % % f % f % % % f % f % % % f % f % % % f % f % % % f % f % % % f % f % f '
,“Headerlines”4“CollectOutput”,真的,“分隔符”,”、“);
(~)=文件关闭(fid);
cac
cac =1×1单元阵列
{30×29双}
cac {1} (1:3, 1:5)
ans = 3×5
3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400 3.1400
为了使 readtable 读你的文件,你需要“修复” delimitedTextImportOptions ——我猜。
3评论
dpb
dpb 2022年6月22日
“我错误地假定readtable调用detectImportOptions……”
readXXX 比成熟的家庭做一些不那么复杂的解析 detectImportOptions 是为了更节省时间的……当然,如果它不工作,使用更多的时间调试和最终会回来……

登录置评。

答案(1)

dpb
dpb 2022年6月22日
另一种方法虽然与一个真正的文件所以可以找出如何解释filel实际上是什么内容,如果有细节需要/想要什么——例如,似乎有什么这两个变量和单位在同一文件中记录如果有任何真理的标题——但有13个变量,只有7“单元”指标和29个数据字段/记录。它不是,因此,完全可能知道什么属于什么,13 x 2 = = > 26所以变量的数量+单位为每个短三列字段。
作为 @per•艾萨克森 提示,我开始了解文件的内容和使用,作为额外的信息 detectimportoptions 建立一个文本文件导入对象使用一个更高层次的例程 readtable 如果使用适当的数据结构——再一次,这只会是可知的细节的文件我们没有什么是要做的数据加载。
但是,恢复到原始的问?构成,粗糙的轮廓蛮力之类的
l = readline (“FormatExample.csv”);
nHdr =找到(startsWith (“VariableName1”)+ 1;
nTrlr =找到(count (l,”、“)= = strlength (l), 1) 1;
data = str2double (l (nHdr: nTrlr));

下载188bet金宝搏


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!