从 emacs 组织模式表中提取字段值
Extracting field values from emacs org-mode tables
分隔符:我是 emacs 新手。
我正在尝试制作一个通过 org-table 并提取特定值并对它们进行一些算术运算的函数。算法与我的问题无关,但我无法将字段值放入整数或浮点数列表中。
例如函数
(defun print-field-value()
(interactive)
(setq list '())
(unless (org-table-p) (error "Not in an org-table"))
(goto-char (org-table-begin))
(org-table-next-field)
(while (org-table-p)
(add-to-list 'list (save-excursion (org-table-get-field 1)))
(forward-line))
(print list)
)
在 table
上执行时
| 7 | 8 | 9 | 10 | 11 | -12 |
| 78 | 46 | 00 | 36 | 64 | 98 |
产生输出
(#(" 78 " 0 4 (fontified t face org-table)) #(" 7 " 0 4 (fontified t face org-table)))
我有两个问题要问社区:
1. 我列表中的这些元素是什么? (什么类型的物体或那些)
2. 有没有一种方法可以将整数放入列表中,以便我可以轻松地对值执行一些算术运算?
理想情况下,我正在寻找一种简单的方法来执行此操作,而无需创建另一个函数来分解上述函数 returns 并提取整数。我的直觉(可能有缺陷)是应该有更简单的方法来做到这一点。我说得对吗?
#(" 78 " 0 4 (fontified t face org-table))
是一个字符串,在 C 中只记为 " 78 "
。接下来,您不需要将结果打印到 return:在您的代码中使用 list
而不是 print list
就足够了。
如果您想发现 emacs 中的任何模式,请使用其所有函数都具有相同前缀的事实。在这里,运行 describe-function
org-table-
并按 TAB 键两次以获取在 org 表上工作的所有函数的列表。然后您将看到有前途的函数 org-table-analyze
,并阅读其文档。这样你可能会想到以下内容:
(defun get-field-values ()
(unless (org-table-p) (error "Not in an org-table"))
(org-table-analyze)
(mapcar
(lambda (i)
(mapcar (lambda (j) (string-to-number (org-table-get i j)))
(number-sequence 1 org-table-current-ncol)))
(number-sequence 1 (1- (length org-table-dlines)))))
它将为您提供字段矩阵,作为数字列表的列表。注意这个功能不是交互式的,你 运行 它与 M-:
分隔符:我是 emacs 新手。 我正在尝试制作一个通过 org-table 并提取特定值并对它们进行一些算术运算的函数。算法与我的问题无关,但我无法将字段值放入整数或浮点数列表中。
例如函数
(defun print-field-value()
(interactive)
(setq list '())
(unless (org-table-p) (error "Not in an org-table"))
(goto-char (org-table-begin))
(org-table-next-field)
(while (org-table-p)
(add-to-list 'list (save-excursion (org-table-get-field 1)))
(forward-line))
(print list)
)
在 table
上执行时| 7 | 8 | 9 | 10 | 11 | -12 |
| 78 | 46 | 00 | 36 | 64 | 98 |
产生输出
(#(" 78 " 0 4 (fontified t face org-table)) #(" 7 " 0 4 (fontified t face org-table)))
我有两个问题要问社区: 1. 我列表中的这些元素是什么? (什么类型的物体或那些) 2. 有没有一种方法可以将整数放入列表中,以便我可以轻松地对值执行一些算术运算?
理想情况下,我正在寻找一种简单的方法来执行此操作,而无需创建另一个函数来分解上述函数 returns 并提取整数。我的直觉(可能有缺陷)是应该有更简单的方法来做到这一点。我说得对吗?
#(" 78 " 0 4 (fontified t face org-table))
是一个字符串,在 C 中只记为 " 78 "
。接下来,您不需要将结果打印到 return:在您的代码中使用 list
而不是 print list
就足够了。
如果您想发现 emacs 中的任何模式,请使用其所有函数都具有相同前缀的事实。在这里,运行 describe-function
org-table-
并按 TAB 键两次以获取在 org 表上工作的所有函数的列表。然后您将看到有前途的函数 org-table-analyze
,并阅读其文档。这样你可能会想到以下内容:
(defun get-field-values ()
(unless (org-table-p) (error "Not in an org-table"))
(org-table-analyze)
(mapcar
(lambda (i)
(mapcar (lambda (j) (string-to-number (org-table-get i j)))
(number-sequence 1 org-table-current-ncol)))
(number-sequence 1 (1- (length org-table-dlines)))))
它将为您提供字段矩阵,作为数字列表的列表。注意这个功能不是交互式的,你 运行 它与 M-: