提取txt文件中的数字源码
发一个程序,用于提取txt文件中的数字。并按行分组,组成一个列表。
(defun c:tt()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq cf (open "C:\\Users\\zz12344121\\Desktop\\A9R5B09.txt" "r"))
(setq n 1);预设行值1
(setq cnlist nil);初始化文本内容序列
(setq comment (READ-LINE cf))
(if comment
(progn
(setq cn (cons n comment))
(setq cnlist (cons cn cnlist))
)
(progn
(alert "NO COMMENT")
(exit)
))
(while comment
(setq comment (READ-LINE cf))
(setq n (1+ n))
(setq cn (cons n comment))
(setq cnlist (cons cn cnlist))
)
(setq cnlist (reverse cnlist))
(close cf)
;;获取数据列表后,开始
;;;提取字符串中的数据
(setq zong_numlist nil)
(setq j 1);第一行
(repeat (length cnlist)
(setq i 1);字符串中第一个数
(setq numlist nil)
(setq hh (cdr (assoc j cnlist)));第j行字符串
(if hh
(while (<= i (strlen hh))
(setq num (substr hh i 1))
(setq i (1+ i))
(if (and (>= (ascii num) 46) (<= (ascii num) 57));数字和乘除
(progn
;(setq i (1+ i))
(setq num_next (substr hh i 1))
(while (and (>= (ascii num_next) 46) (<= (ascii num_next) 57));数字和乘除
(setq num (strcat num num_next));数据累积
(setq i (1+ i))
(setq num_next (substr hh i 1))
)
(setq i (1+ i));下一个字符不为数字,继续加,下次又判断一次
(setq numlist (cons num numlist))
)
)
)
)
(setq numlist (reverse numlist));每行提取完毕
(if numlist
(setq zong_numlist (cons numlist zong_numlist))
)
(setq j (1+ j))
)
(setq zong_numlist (reverse zong_numlist));提取完毕
)
;; tt(提取txt文件中的数字)
(defun c:tt ()
(setq lst (xyp-Txt2List "d:\\临时.txt")
lst (mapcar '(lambda (x) (xyp-get-HzEngNum x 3)) lst)
lst (vl-remove nil lst)
)
(princ lst)
(princ)
)
页:
[1]