乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 26|回复: 14

[编程交流] 拆分Delimet的正确语法

[复制链接]

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 15:47:15 | 显示全部楼层 |阅读模式
我想这段代码需要快速修复。
 
我正在读取CSV,将记录拆分为一个变量,以便测试变量。
 
我尝试调用时出错:(LM:str->lst fil“,”)
 
关于我应该如何修复它,有什么建议吗?
 
格雷格
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:55:52 | 显示全部楼层
尝试以下操作:
“out”将是您的列表列表
  1. (defun c:readmycsv (/ fl out)
  2. ;; String to List  -  Lee Mac
  3. ;; Separates a string using a given delimiter
  4. ;; str - [str] String to process
  5. ;; del - [str] Delimiter by which to separate the string
  6. ;; Returns: [lst] List of strings
  7. (defun lm:str->lst (str del / pos)
  8.    (if        (setq pos (vl-string-search del str))
  9.      (cons (substr str 1 pos) (lm:str->lst (substr str (+ pos 1 (strlen del))) del))
  10.      (list str)
  11.    )
  12. )
  13. (if (setq fl (open "C:\\Users\\ggleason\\Documents\\CAD\\AutoCAD\\Lisp\\Book1.csv" "r"))
  14.    (progn (while (setq fil (read-line fl)) (setq out (cons (lm:str->lst fil ",") out))) (close fl))
  15. )
  16. (reverse out)
  17. )
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 15:56:53 | 显示全部楼层
朗琼普,
 
太棒了!
 
下一个问题是,当给定的字符串与第一条记录匹配时,如何查找?第一条记录包含。dwg名称。我想重点关注与打开的文件名匹配的记录。dwg文件。
 
格雷格
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:00:44 | 显示全部楼层
可能是这样的:
  1. (vl-remove-if-not '(lambda (x) (wcmatch (strcase (car x)) (strcase (getvar 'dwgname)))) out)
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:07:48 | 显示全部楼层
这是替换了一行代码还是添加了一行代码?
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:12:47 | 显示全部楼层
用上述代码替换最后一行(反向输出)。。应该只提供与当前图形匹配的线。
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:15:26 | 显示全部楼层
太棒了!
 
我试图做的最后一件事是在字段上隔离,在本例中为“DATE”,并返回该值(请参阅sample.csv文件)。
 
我是否需要在您提供的替换代码行下方添加另一行代码?
Book1.csv
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:18:12 | 显示全部楼层
相反,使用此选项(假设只有一条记录)将返回第一个子列表的最后一项。
  1. (last
  2. (car (vl-remove-if-not '(lambda (x) (wcmatch (strcase (car x)) (strcase (getvar 'dwgname)))) out))
  3. )
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:23:03 | 显示全部楼层
这接近于我想要的,但它选择了“NONE”作为值,而不是日期值。此外,可能存在列更改的情况。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:30:06 | 显示全部楼层
如果列发生更改,则需要在标题上找到索引,并使用该索引获取日期。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 00:09 , Processed in 0.376590 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表