读取引用的 csv

读取引用的 csv

我想将 CSV 文件中的数据读入图表。不幸的是,数据本身包含逗号:

Name, Description, Data
hello, "hello, world", 1

请注意,数据使用引号引用,这在 CSV 文件中很常见。我使用以下内容读取文件:

\pgfplotstableread[col sep=comma]{data.csv}{\datatable}

问题是:该pgfplotstable包似乎无法处理引号,具体来说,我收到一条错误消息,因为第二行中的条目显然太多了。我按以下方式编辑了该文件:

Name, Description, Data
hello, hello\, world, 1

这似乎可以正常工作。然后我尝试Description在图中使用该列作为符号坐标:

  \begin{axis}[yticklabels from table={\datatable}{Description}]
  # ....
  \end{axis}

本例中的问题:逗号消失,标签只显示“hello world”。

有没有办法读取引用的条目(我一直使用pgfplotstable),或者以某种方式引用文件,以便我可以将列读入标签?

答案1

根据评论:由于我能够直接修改 CSV,因此转义逗号的可接受方法是第五个选项,即用花括号括住单元格:

\documentclass{minimal}
\usepackage{pgfplots}
\usepackage{filecontents}

\begin{filecontents*}{data.csv}
Name,Description,Data
hello,hello,1
second,second \, option,2
third,third \, option,3
fourth,"{fourth, option}",4
fifth,{fifth, option},5
\end{filecontents*}

\pgfplotstableread[col sep=comma]{data.csv}\datatable

\begin{document}

\begin{tikzpicture}
  \begin{axis}[ymin=-5,ymax=5,yticklabels from table={\datatable}{Description}]
  \end{axis}
\end{tikzpicture}

\end{document}

请注意:我使用\,不是为了产生额外的空格,而是为了转义逗号。毕竟,表格中的一行first, "first, option", 1会导致 latex 失败并显示错误消息

! Package pgfplots Error: Table 'data.csv' appears to have too many columns

因此,使用 CSV 文件的解析选项pgfplotstable似乎相当有限......

相关内容