gpt4 book ai didi

arrays - 将带有文本字段的 CSV 扫描到 Swift 数组中

转载 作者:行者123 更新时间:2023-11-30 13:43:45 26 4
gpt4 key购买 nike

我找到了一个 CSV 扫描方法 here 。引导我的答案是 here .

我的问题是:我尝试扫描的 CSV 数据偶尔包含逗号(在名为“注释”的字段以及其他字段中)。当我扫描 csv 时,这会出现问题,因为它将注释字段解释为其中包含单独的值。

有人可以帮助我编辑此方法以正确处理文本字段内的逗号吗?我也不确定如何保存 csv 来分隔该字段。不确定在此方法和 csv 的保存选项中需要进行哪些具体更改。

这是直接来 self 的应用程序的函数:

func scanCSV () -> Array<Dictionary<String,String>> {
var myCSVContents = Array<Dictionary<String, String>>()

//rawData is a global string variable that gets set to the CSV string on object init.
let allRows = rawData.componentsSeparatedByString("\n")
let headers = allRows[0].componentsSeparatedByString(",")

runFunctionOnRowsFromFile(headers, withFunction: {
(aRow: Dictionary<String, String>) in
myCSVContents.append(aRow)
})

return myCSVContents

}
func runFunctionOnRowsFromFile(theColumnNames:Array<String>, withFunction theFunction:(Dictionary<String, String>)->()) {

var fileObjectCleaned = rawData.stringByReplacingOccurrencesOfString("\r", withString: "\n")

fileObjectCleaned = fileObjectCleaned.stringByReplacingOccurrencesOfString("\n\n", withString: "\n")

let objectArray = fileObjectCleaned.componentsSeparatedByString("\n")

for anObjectRow in objectArray {

let objectColumns = anObjectRow.componentsSeparatedByString(",")

var aDictionaryEntry = Dictionary<String, String>()

var columnIndex = 0

for anObjectColumn in objectColumns {

aDictionaryEntry[theColumnNames[columnIndex]] = anObjectColumn.stringByReplacingOccurrencesOfString("\"", withString: "", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)

columnIndex++
}

if aDictionaryEntry.count>1{
theFunction(aDictionaryEntry)
}
}
}

我意识到这个问题之前已经被问过,但我对其他语言在这些答案中的语法差异感到困惑。我是一名新程序员,如果这不是很明显的话。

最佳答案

通常,在处理 CSV 等常用格式时,最好查找并使用现有库。 Swift 中已经存在一些,例如 CSwiftVSwiftCSV (前者遵循 rfc4180 standard )。

这样做的原因是,常见任务中的一些细节(无论任务本身是什么)至少会有点棘手,因此通过使用现有的库而不是自己编写,您可以可以最大限度地减少实际需要把事情做好的人数。

关于arrays - 将带有文本字段的 CSV 扫描到 Swift 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com