【问题标题】:Splitting csv on comma's except when the string is in quotes在逗号上拆分 csv,除非字符串在引号中
【发布时间】:2019-10-04 22:39:54
【问题描述】:

我在拆分包含如下数据的 csv 文件时遇到问题

Cat, car, dog, "A string, that has comma's in it", aircraft, truck

我最初尝试使用以下代码拆分文件..

结果

汽车

一个字符串

里面有逗号

飞机

卡车

        csvFile.splitEachLine( /,\s*/ ){ parts ->
            tmpMap = [:]
            tmpMap.putAt("column1", parts[0])
            tmpMap.putAt("column2", parts[1])
            tmpMap.putAt("column3", parts[2])
            tmpMap.putAt("column4", parts[3])



            mapList.add(tmpMap)

我想要的是

汽车

一个包含逗号的字符串

飞机

卡车

【问题讨论】:

标签: regex groovy soapui


【解决方案1】:

你应该稍微改变你的正则表达式:

def mapList = []
def csvFile = "Cat, car, dog, \"A string, that has comma's in it\", airplane, truck"
​csvFile.splitEachLine( /,(?=(?:[^"]*\"[^"]*")*[^"]*\Z)\s/ ){ parts ->        
    tmpMap = [:]           
    tmpMap.putAt("column1", parts[0])        
    tmpMap.putAt("column2", parts[1])        
    tmpMap.putAt("column3", parts[2])          
    tmpMap.putAt("column4", parts[3])  
    tmpMap.putAt("column5", parts[4]) 
    tmpMap.putAt("column6", parts[5]) 
    mapList.add(tmpMap)
}
​print mapList​

但最好使用已经创建的库。它会让你的生活更轻松。看看https://github.com/xlson/groovycsv

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 2011-12-25
    • 2018-04-14
    • 2016-03-19
    • 2020-04-26
    相关资源
    最近更新 更多