将CSV导入Org-mode属性

lec*_*tif 5 csv emacs elisp org-mode

我想将CSV导入Org-mode.其他人已经询问过将CSV导入Org模式表.那不是我想要做的.我需要将CSV导入Org-mode属性.

例如,像这样的CSV:

Name,Tel,Mobile,Fax
John,11111,22222,33333
Run Code Online (Sandbox Code Playgroud)

应成为:

:PROPERTIES:
:Name: John
:Tel: 11111
:Mobile: 22222
:Fax: 33333
:END:
Run Code Online (Sandbox Code Playgroud)

你碰巧知道这种无痛的方式吗?

phi*_*ils 4

我能看到的最简单的方法是将数据行标记为区域,然后使用正则表达式搜索和替换:

M-x replace-regexp RET \(.*\),\(.*\),\(.*\),\(.*\) RET :PROPERTIES: C-q C-j :Name: \1 C-q C-j :Tel: \2 C-q C-j :Mobile: \3 C-q C-j :Fax: \4 C-q C-j :END: RET

如果您需要对许多具有不同标题和列数的可变 CSV 文件执行此操作,那么我可能会使用键盘宏来实现它。

user310031 的回答将为此奠定良好的基础。该宏可以将缓冲区缩小到每行,在其上方插入标题行,执行csv-transpose(似乎需要CSV 模式)执行搜索+替换,添加 和:PROPERTIES::END:,再次加宽缓冲区,并将点保留在行上在下一个数据行之前。然后只需将剩余的数据行标记为区域,然后输入C-x C-k r