如何从 CSV 文件中获取特定列的最后一个元素?

如何从 CSV 文件中获取特定列的最后一个元素?

我有不同长度的 CSV 文件。例如

a,b,c,d,e
0,0, 5, 5, 1
0,5, 5, 11, 2
0,11, 5, 16, 1
5,0, 10, 6, 1
5,6, 10, 11, 2

我想获取cd列的最后一个元素的值,例如c=10 和d=11。每次使用不同长度的不同文件。我正在使用该datatool包。

\DTLloaddb[
    headers={a,b,c,d,e},
    keys={a,b,c,d,e}
]{data}{input} 
.....
....
\DTLforeach*{data}{\a=a,\b=b,\c=c,\d=d,\e=e}{
......
...
\eappto\mydraws{[gray, fill=\k,line width=0.05cm] (axis cs:\a,\b) rectangle (axis cs:\c,\d);}%
}

我不知道如何才能访问特定列的最后一个元素。

答案1

您可以直接遍历数据库,将全局变量设置为适当的列条目,最后它将包含最后一个条目:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{datatool}


\usepackage{filecontents}% Comment to prevent overwriting MyData.csv
\begin{filecontents*}{MyData.csv}
a, b,  c,  d, e  
0, 0,  5,  5, 1
0, 5,  5, 11, 2 
0,11,  5, 16, 1
5, 0, 10,  6, 1
5, 6, 10, 11, 2
\end{filecontents*}

\newcommand*{\LastC}{}%
\newcommand*{\LastD}{}%

\begin{document}

\DTLloaddb[%
    headers={a,b,c,d,e},%
    keys={a,b,c,d,e}%
]{myDB}{MyData.csv}

\DTLforeach*{myDB}{\CurrentA=a,\CurrentB=b,\CurrentC=c,\CurrentD=d,\CurrentE=e}{%
    \xdef\LastC{\CurrentC}    
    \xdef\LastD{\CurrentD}
} 

LastC = \LastC, and LastD = \LastD
\end{document}

相关内容