拆分Delimet的正确语法
我想这段代码需要快速修复。我正在读取CSV,将记录拆分为一个变量,以便测试变量。
我尝试调用时出错:(LM:str->lst fil“,”)
关于我应该如何修复它,有什么建议吗?
格雷格 尝试以下操作:
“out”将是您的列表列表
(defun c:readmycsv (/ fl out)
;; String to List-Lee Mac
;; Separates a string using a given delimiter
;; str - String to process
;; del - Delimiter by which to separate the string
;; Returns: List of strings
(defun lm:str->lst (str del / pos)
(if (setq pos (vl-string-search del str))
(cons (substr str 1 pos) (lm:str->lst (substr str (+ pos 1 (strlen del))) del))
(list str)
)
)
(if (setq fl (open "C:\\Users\\ggleason\\Documents\\CAD\\AutoCAD\\Lisp\\Book1.csv" "r"))
(progn (while (setq fil (read-line fl)) (setq out (cons (lm:str->lst fil ",") out))) (close fl))
)
(reverse out)
) 朗琼普,
太棒了!
下一个问题是,当给定的字符串与第一条记录匹配时,如何查找?第一条记录包含。dwg名称。我想重点关注与打开的文件名匹配的记录。dwg文件。
格雷格 可能是这样的:
(vl-remove-if-not '(lambda (x) (wcmatch (strcase (car x)) (strcase (getvar 'dwgname)))) out) 这是替换了一行代码还是添加了一行代码? 用上述代码替换最后一行(反向输出)。。应该只提供与当前图形匹配的线。 太棒了!
我试图做的最后一件事是在字段上隔离,在本例中为“DATE”,并返回该值(请参阅sample.csv文件)。
我是否需要在您提供的替换代码行下方添加另一行代码?
Book1.csv 相反,使用此选项(假设只有一条记录)将返回第一个子列表的最后一项。
(last
(car (vl-remove-if-not '(lambda (x) (wcmatch (strcase (car x)) (strcase (getvar 'dwgname)))) out))
) 这接近于我想要的,但它选择了“NONE”作为值,而不是日期值。此外,可能存在列更改的情况。 如果列发生更改,则需要在标题上找到索引,并使用该索引获取日期。
页:
[1]
2