如何处理字段被引号括起来的 csv 文件?

如何处理字段被引号括起来的 csv 文件?

我有一个 csv 文件,其字段包含文本。由于字段可以包含换行符,因此它们用双引号括起来。使用我最喜欢的电子表格 (libreoffice) 可以很好地编辑这些文件。我想呈现此文件,但遇到了以下问题:

  • 报价已呈现
  • 新的行将被忽略

我使用 csvsimple,但它可能不是最好的选择。以下是包含 3 个文件的简单工作示例:

数据.csv:

"1st field", "numerical field", "string field"
"foo", 3, "bar"
"xizzy", 0, "lorem
ipsum"
"nothing", 1,"last string"

数据简单.csv:

1st field, numerical field, string field
foo, 3, bar
xizzy, 0, lorem ipsum
nothing, 1,last string

csvtest.tex:

\documentclass{article}
\usepackage{geometry}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
%\usepackage{pgfplotstable}
\usepackage{csvsimple}

\begin{document}
\csvautotabular{./data_simple.csv}
\csvautotabular{./data.csv}
\end{document}

data_simple.csv 对应的表没问题,但 data.csv 对应的表不符合我的预期。

答案1

可以通过为某个字符分配类别代码 9 来指示 TeX 忽略该字符。这不会影响\"文件中的使用。

\begin{filecontents*}{\jobname.csv}
"1st field", "numerical field", "string field"
"foo", 3, "bar"
"xizzy", 0, "lorem
ipsum"
"nothing", 1,"last string"
\end{filecontents*}

\documentclass{article}
\usepackage{csvsimple}

\begin{document}

\begingroup\catcode`"=9
\csvautotabular{\jobname.csv}
\endgroup

\end{document}

我使用filecontents*with\jobname.csv作为名称只是为了避免破坏我的文件。

在此处输入图片描述

但请注意,您不能让一个条目跨越两行。这是因为cvssimpleTeX 会使用逐行读取文件,并且无法通过该标记判断行是否结束。

相关内容