使用 csvsimple 省略 CSV 文件中的重复值

使用 csvsimple 省略 CSV 文件中的重复值

我想使用 csvsimple 包将 CSV 文件转换为一组段落,并使用第 1 列的值作为子部分标题。

我无法从文档中看到任何仅在值第一次出现时执行操作的方法。使用 csvsimple 可以做到这一点吗?

COUNTRY,INST,ADDR,PHONE
US,Dept of Justice,Washington DC,123-456/7890
US,Dept of Education,Seattle WA,234-567/8910
UK,Minitrue,London WC,123 456 7890
UK,Miniluv,London EC,234 567 8910

这应该会生成类似这样的内容:

\subsubsection{US}
Dept of Justice: Washington DC\\Phone 123-456/7890\par
Dept of Education: Seattle WA\\Phone 234-567/8910\par
\subsubsection{UK}
Minitrue: London WC\\Phone 123 456 7890\par
Miniluv: London EC\\Phone 234 567 8910\par

这可能吗?我希望避免 datatool 包的复杂性,尽管它很棒。

答案1

当处理数据时,您可以测试是否\COUNTRY已发生变化,例如使用ifthen包。address.csv是您的样本数据。

\documentclass{article}
\usepackage{ifthen}
\usepackage{csvsimple}
\newcommand\COUNTRYlast{}
\newcommand\doaddress%
  {\ifthenelse{\equal{\COUNTRY}{\COUNTRYlast}}%
     {}%
     {\subsubsection{\COUNTRY}%
      \edef\COUNTRYlast{\COUNTRY}%
     }%
   \INST: \ADDR\\Phone \PHONE\par
  }

\parindent0ex
\parskip3pt plus1pt minus 1pt

\begin{document}
\csvreader[head to column names]{address.csv}{}{\doaddress}
\end{document}

结果是

在此处输入图片描述

相关内容