用LISP处理二维数据。例如:在文件test.txt里保存以下内容:
Index para1 para2 para3
A 1 2 3
B 4 5 6
C 7 8 9
D 10 11 12
读取内容的通用函数:
(defun get_para (filename id / fn para val)
(setq fn (open (findfile filename) "r")) ;;;打开数据文件
(setq para (read (strcat "(" (read-line fn) ")"))) ;;;读第一行
(while ;;;读到索引为id的行
(and (setq val (read-line fn))(not (eq id (car (setq val (read (strcat "(" val ")")))))))
(setq val nil)
)
(close fn) ;;;关闭数据文件
(if val
(foreach x (mapcar 'cons para val)(set (car x) (cdr x))) ;;;参数赋值
(foreach x (mapcar 'cons para val)(set (car x) nil)) ;;;参数清空
)
)
测试
(get_para "test.txt" 'B) ;;;得到INDEX=B; PARA1=4; PARA2=5; PARA3=6
(get_para "test.txt" 'D) ;;;得到INDEX=D; PARA1=10; PARA2=11; PARA3=12
(get_para "test.txt" 'E) ;;;得到INDEX=nil; PARA1=nil; PARA2=nil; PARA3=nil