通过忽略csv文件中的空值和标题行来检索数据

时间:2017-11-24 05:50:49

标签: csv groovy soapui

在soapui 5.3.0中使用Groovy Script并在将值从文件提取到列表时遇到以下问题。
下面代码的目的是,检索的列表必须与另一个只有有效值的列表进行比较。

附加代码段和示例csv文件以供参考。

检索值的代码:

def DBvalue= context["csvfile"] //csv file containing the data
def count= context["dbrowcount"] //here the rowcount is 23
for (i=0;i<count;i++) {
    def lines= ""
    lines= DBvalue.text.split('\n')
    list<string> rows = lines.collect{it.split(';)}
    log.info "list is"+rows
}

使用的示例CSV文件包含600列数据,包含23行

abc;null;1;2;3;5;8;null
cdf;null;2;3;6;null;5;6
hgf;null;null;null;jr;null;II

目前我的代码是获取以下输出:

[[abc,null,1,2,3,5,8,null]]
[[abc,null,1,2,3,5,8,null]]
[[abc,null,1,2,3,5,8,null]]

期望的输出:

[1,2,3,5,8]
[2,3,6,5,6]
[jr,II]

1 个答案:

答案 0 :(得分:0)

您应该可以通过以下方式实现它,并按照内嵌评论进行操作。

//Provide your file path; change if needed
def file = new File('/tmp/test.csv')

//To hold all the rows
def list = []

//Change delimiter if needed
def delimiter = ';'

file.readLines().eachWithIndex { line, index ->
    if (index) {
        //Get the row data by split, filter
        def lineData = line.split(delimiter).findAll { 'null' != it && it}
        log.info lineData
        list << lineData
    }
}

//Print all the row data
log.info list

输入:

enter image description here

输出:

enter image description here