注册 登录
明经CAD社区 返回首页

cabinsummer的个人空间 http://www.mjtd.com/?391060 [收藏] [复制] [分享] [RSS]

日志

LISP表处理函数——进阶之道[二]

热度 15已有 2321 次阅读2012-5-9 20:14 |系统分类:应用

用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

路过
1

雷人
13

握手

鲜花

鸡蛋

刚表态过的朋友 (14 人)

发表评论 评论 (1 个评论)

回复 东北-水地暖-温 2012-5-22 06:21
xiexiexiexiexiexiexie。。。。。多谢!

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2019-12-16 07:35 , Processed in 0.122905 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

返回顶部