emacs - 将列表列表转换为组织表
问题描述
我有一个 lisp 数据(列表列表)
(setf *table-data*
'((1 "Team1"
(("member 1" "data1")
("member 2" "data2")
("member 3" "data3")))
(2 "Team2"
(("member 1" "data1")
("member 2" "data2")
("member 3" "data3")))))
当我尝试将此列表转换为时org-table
,使用(princ *table-data*)
我正在获取输出,
| 1 | Team1 | ((member 1 data1) (member 2 data2) (member 3 data3)) |
| 2 | Team2 | ((member 1 data1) (member 2 data2) (member 3 data3)) |
org-table
只考虑最外面的列表元素。
但我想得到输出:
| 1 | Team1 | member 1 | data1 |
| | | member 2 | data2 |
| | | member 3 | data3 |
| 2 | Team2 | member 1 | data1 |
| | | member 2 | data2 |
| | | member 3 | data3 |
有没有可能实现这一目标?
另外,我想将此表转换回列表列表而不是普通列表。
解决方案
[仅部分答案:此答案涉及从 lisp 数据结构转换表,就像 Org 模式一样。]
您要生成的表的 lisp 表示形式如下:
#+begin_src emacs-lisp
(setq x '((1 "Team1" "member 1" "data1")
("" "" "member 2" "data2")
("" "" "member 3" "data3")
(2 "Team2" "member 1" "data1")
("" "" "member 2" "data2")
("" "" "member 3" "data3")))
x
#+end_src
#+RESULTS:
| 1 | Team1 | member 1 | data1 |
| | | member 2 | data2 |
| | | member 3 | data3 |
| 2 | Team2 | member 1 | data1 |
| | | member 2 | data2 |
| | | member 3 | data3 |
正如您通过评估源代码块所看到的。
剩下要做的是将您想要的表示转换为该表示,反之亦然。
推荐阅读
- c# - JObject 格式化列表问题
- sql - 在 Where 子句 SQL Server 中同时使用 between 和 Or
- angular - 防止 Angular 应用程序在首次启动时重新路由到 root
- c - How to convert an ASCII string into a decimal number?
- apache-kafka - 如何在 kafka-connect-elasticsearch 中映射使用不同主题名称策略的多个主题
- docker - Raspberry Pi + Python + Docker - 无法访问 /dev/mem。尝试以 root 身份运行!错误
- python - 使用 np.random.norm 的 6 个不同时间序列
- python - Python:仅显示必要的小数
- javascript - 如何使用异步操作遍历嵌套数组?
- cmake - CMake 的 add_custom_command 不会触发库的重建