解析从 csv 文件自动生成的表格的输入

解析从 csv 文件自动生成的表格的输入

我有一个 .csv 文件,如下所示:

{one},{two},{three}
11/07/2014,14:49:54,(100,100)
2,2,2

我有一些从.csv 文件创建表的代码。

 \documentclass{article}

\usepackage{booktabs}

\usepackage{siunitx}

\usepackage{pgfplotstable}

% Setup siunitx:
\sisetup{
  round-mode          = places, % Rounds numbers
  round-precision     = 2, % to 2 places
}
\begin{table}[h!]
  \begin{center}
 \caption{Autogenerated table from .csv file.}
\label{table1}
\pgfplotstabletypeset[
  multicolumn names, % allows to have multicolumn names
  col sep=comma, % the seperator in our .csv file
  display columns/0/.style={
    column name=$Value 1$, % name of first column
    column type={S},string type},  % use siunitx for formatting
  display columns/1/.style={
    column name=$Value 2$,
    column type={S},string type},
  display columns/1/.style={
    column name=$Value 3$,
    column type={S},string type},
  every head row/.style={
    before row={\toprule}, % have a rule at top
    after row={
      \si{\ampere} & \si{\volt} & \si{\tesla} \\ % the units seperated by &
        \midrule} % rule under units
        },
    every last row/.style={after row=\bottomrule}, % rule at bottom
]{/path/to/file/table.csv} % filename/path to file
  \end{center}
\end{table}

\end{document}

摘自教程

但是,每个包含“,”或“:”的 csv 单元格都会出现错误。

内容如下:

Package PGF Math Error: Could not parse input '(100,100)'
|75 error| Package PGF Math Error: Could not parse input '00:04:00' 

我尝试了常见的方法,将单元格包裹在“”或{}中,但无济于事。

答案1

我本来想用评论来指出一些问题,但我现在还不能;尽管这还不是完整的答案……

当我最小化您的示例并使其编译时(文档尚未开始),我得到了

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{pgfplotstable} \pgfplotsset{compat=1.14} 
\usepackage{filecontents}

\begin{filecontents}{table.csv}
{one},{two},{three}
11/07/2014,14:49:54,(100,100)
2,2,2
\end{filecontents}

\begin{document}
% Setup siunitx:
\sisetup{round-mode = places, round-precision = 2 }
\pgfplotstableread[
  multicolumn names, % allows to have multicolumn names
  col sep=comma, % the seperator in our .csv file
  display columns/0/.style={
    column name=$Value 1$, % name of first column
    column type={S},string type},
  display columns/1/.style={
    column name=$Value 2$,
    column type={S},string type},
  display columns/1/.style={
    column name=$Value 3$,
    column type={S},string type},
  every head row/.style={
    before row={\toprule}, % have a rule at top
    after row={
  \si{\ampere} & \si{\volt} & \si{\tesla} \\
    \midrule} % rule under units
    },
every last row/.style={after row=\bottomrule},
]{table.csv} …
\end{document}

然后它会显示有用的错误消息:

软件包 pgfplots 错误:表“table.csv”的第 5 行似乎有太多列:忽略“100””。PGFPlots 发现列数大于之前确定的列数。请验证每个单元格条目是否正确分隔(如有必要,请使用括号 {}。还要验证列名是否为纯 ASCII。)。此错误并不严重。

接下来我建议

  • 将坐标分隔符替换为逗号以外的其他符号(用于 csv)或
  • 将单元格分隔符的逗号替换为分号

下次还请考虑:

  • 创建最小工作示例(通常称为 MWE)
  • 并将其放在一个文件中(参见文件内容)

因为专业人士(可能能够立即帮助您)不会浪费时间为您做这件事。

相关内容