登录 或者 注册 欢迎访问UG爱好者论坛,请先

UG爱好者

查看: 725|回复: 8

[分享] [脚本分享][后处理下载]从CSV文件中读取数据——[配置表]的应用-第二期

[复制链接]

实习版主

Rank: 7Rank: 7Rank: 7

15

主题

351

帖子

5502

积分

论坛元老

发表于 2020-6-28 16:10:21 | 显示全部楼层 |阅读模式
上期回顾
让后处理修改变得简单点——[配置表]的应用-第一期
(出处: UG爱好者)

我们也许会觉得txt格式的配置表不够清爽,蜗牛是带有一点点强迫症的。
如果我们做成csv格式的呢?
01.png
这样看着会舒服很多吧 :D
那么怎么从后处理中获取数据呢?

这次分享通过运行一个脚本获取csv文件中的数据。
在表格中,设1行A列的单元格坐标为(0,0)
需要获取的值为6行C列,即(5,2);7行C列,即(6,2)

运行脚本
02.png
输出结果正确。

以下为脚本代码部分:
  1. proc readCSV { channel { header 1 } { symbol , }} {

  2.        set quote 0

  3.        set data [ split [ read $channel nonewline ] "\n" ]

  4.        foreach line $data {

  5.               set quote [ expr { $quote + [ regexp -all \" $line ]}]

  6.               if { [ expr { $quote % 2 }] == "0" } {

  7.                      set quote 0

  8.                      append row_temp $line

  9.                      set row_temp [ split $row_temp , ]   

  10.                      foreach section $row_temp {

  11.                             set quote [ expr { $quote + [ regexp -all \" $section ]}]

  12.                             if { [ expr { $quote % 2 }] == "0" } {

  13.                                    append cell_temp $section

  14.                                    set cell_temp [ regsub {"(.*)"} $cell_temp {\1} ]

  15.                                    lappend cell $cell_temp

  16.                                    unset cell_temp

  17.                                    set quote 0

  18.                             } else {

  19.                                    append cell_temp $section$symbol

  20.                             }

  21.                      }

  22.                      lappend final [ regsub -all {""} $cell \" ]

  23.                      unset cell

  24.                      unset row_temp

  25.               } else {

  26.                      append row_temp $line\n

  27.               }

  28.        }

  29.        # generate array if needed, or return $final here

  30.        set row [ llength $final ]

  31.        set column [ llength [ lindex $final 0 ]]

  32.        if { $header == 1 } {

  33.               for { set i 0 } { $i < $row } { incr i } {         

  34.                      for { set j 0 } { $j < $column } { incr j } {

  35.                             set csvData([ lindex [ lindex $final 0 ] $j ],$i) [ lindex [ lindex $final $i ] $j ]

  36.                      }

  37.               }

  38.        } else {

  39.               for { set i 0 } { $i < $row } { incr i } {         

  40.                      for { set j 0 } { $j < $column } { incr j } {

  41.                             set csvData($i,$j) [ lindex [ lindex $final $i ] $j ]

  42.                      }

  43.               }

  44.        }

  45.        return [ array get csvData ]

  46. }





  47. set csv [ open [file dirname [info script]]/config.csv {RDWR} ]

  48. array set csvData [ readCSV $csv 0 ]

  49. puts $csvData(5,2)

  50. puts $csvData(6,2)

  51. close $csv
复制代码

当我们在后处理中source脚本后,调用数组$csvData便得到配置表中的值了。
得到的值该如何去利用,可以参考上一期的贴子。

以下为后处理和脚本文件
后处理和脚本文件.rar (53.04 KB, 下载次数: 106)

评分

参与人数 2G币 +20 收起 理由
在想什么呢 + 10 不错,支持你!
安周 + 10 不错,支持你!

查看全部评分

有奖推广贴子: 

闪光的蜗牛
回复

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

6

主题

74

帖子

1257

积分

论坛元老

发表于 2020-6-28 16:13:05 | 显示全部楼层
本帖最后由 安周 于 2020-6-28 16:14 编辑

沙发拿下,希望大师继续分享!有你越来越精彩。
回复 支持 反对

使用道具 举报

四级士官

Rank: 3Rank: 3

2

主题

33

帖子

809

积分
发表于 2020-6-28 16:13:24 | 显示全部楼层
牛哥66666666666666
回复 支持 反对

使用道具 举报

上校

Rank: 7Rank: 7Rank: 7

43

主题

2386

帖子

1万

积分
发表于 2020-6-28 16:25:24 | 显示全部楼层
感谢分享,能出个后处理程序单就好了..

现在外挂的那些时间和刀长都不准确
回复 支持 反对

使用道具 举报

中尉

Rank: 5Rank: 5

6

主题

385

帖子

4658

积分
发表于 2020-6-28 16:59:34 | 显示全部楼层
楼主太强大了!!!!!!!!!!!!!!!!!。
回复 支持 反对

使用道具 举报

少尉

Rank: 5Rank: 5

0

主题

322

帖子

2827

积分
发表于 2020-6-28 17:02:31 | 显示全部楼层
楼主太强大了!!!!
回复 支持 反对

使用道具 举报

少校

Rank: 6Rank: 6

1

主题

1243

帖子

7195

积分
发表于 2020-6-29 08:54:23 | 显示全部楼层
感谢分享,有你越来越精彩。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
点击这里给我发消息
客服电话:0577-62768008
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 浙ICP备15013022号-4 )    论坛管理员点击这里给我发消息

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2020-7-12 18:29

返回顶部