将 lisp 数据结构导入 python



Quick Side 所以,我有点像Python的菜鸟;因此,请原谅我描述事物的错误方式,如果我没有提供足够的信息,请问我问题。

问我的标题指示,我正在尝试引入一个 Lisp 数据结构的数据集。我正在尝试从小处着手并使用较小的数据集(因为我最终将处理更大的数据集(,但是,我不清楚应该如何为我的熊猫设置分隔符

因此,我从 lisp 数据结构中引入一个.dat文件,并用 pandas 读取它(或尝试(。 我的目标是尝试让它成为一个普通的数据集,在那里我可以将给定的函数与其受人尊敬的输出分开。

我的 Lisp 数据集如下所示:

(setf nameoffile?'
((function-1 output1) (function-2 output2 output3 output4) (function-3 output5 output 6 output7...)
(function-4 output)
...
(function-N outputN outputM ... )) )

希望这不会太神秘。如果我没有提供足够的信息,请告诉我。 最后,我的目标是拥有所有函数,比如说一行,并在 pandas 数据帧中跨行读取输出(因为我已经习惯了(;例如:

function-1: output1
function-2: output2 and so on and so forth...

同样,如果我有点困惑,或者没有提供足够的信息,请告诉我。 提前非常感谢!

编辑: 我的具体问题是如何将这种有点模棱两可的 lisp 数据结构插入到 pandas 数据帧中?此外,我不知道如何将我想要的内容修改为所需的行以及如何将它们分开(分隔符/sep = ?当我通过熊猫插入它时,我得到一个非常杂乱的数据帧。我认为一个关键问题是我如何适当地将它们分开?

正如 @molbdnilo 和 @sds 所指出的,以通用格式从 lisp 导出数据,然后使用现有的解析器将它们导入到 Python 中可能更容易。

例如,您可以使用 quicklisp 上提供的 cl-csv 库将它们从 Lisp 保存到 CSV 文件中。

正如您从 cl-csv 测试中看到的那样,您可以使用write-csv函数从数据中获取 csv 字符串:

(write-csv *your-data-rows* :always-quote t)

或者,如果要逐行进行,可以使用write-csv-row函数。

然后可以轻松地将生成的字符串保存到文件中并从 Python 读取此 CSV。

如果你的 Lisp 程序还不是太大,可以考虑用 Hy 重写它。Hy是一种Lisp方言,所以你可以继续用Lisp写作。而且,

Hy在其他所有方面都保持了与Python本身的100%兼容性。

这意味着你可以在编写 Hy 时使用 Python 库,并且可以在 Hy 中编写一个模块以在 Python 中使用。

我不知道你的项目是如何设置的(我不认识熊猫(,但也许你可以用它来直接与熊猫沟通?

最新更新