CSVKit 是一个非常简单、快速且轻量级的 CSV 解析和编码库,用于 Swift 编程。
该解析器读取 String 或 Data 对象,并将 CSV 字段解析为字符串数组。每个根元素对应于数据的一行。
功能特性
将以下内容添加到您的 Package.swift 文件
dependencies: [
.package(url: "https://github.com/sanzaru/csvkit.git", from: "0.0.1")
]
import Foundation
import CSVKit
struct App {
static func main() {
// Decode with semicolon (default) separator
let csvData = "Foo;Bar;Foo2;Bar2\n\"Line2\";\"Line2-1\";\"Line2-2\";\"Line2-3\""
let parsed = CSVParser.shared.parse(from: csvData)
dump(parsed)
}
}
App.main()
输出
▿ 2 elements
▿ 4 elements
- "Foo"
- "Bar"
- "Foo2"
- "Bar2"
▿ 4 elements
- "Line2"
- "Line2-1"
- "Line2-2"
- "Line2-3"
import Foundation
import CSVKit
struct App {
static func main() {
// Decode with custom separator
let csvDataComma = "Foo,Bar,Foo2,Bar2\n\"Line2\",\"Line2-1\",\"Line2-2\",\"Line2-3\""
var parser = CSVParser()
parser.separator = ","
let parsedComma = parser.parse(from: csvDataComma)
dump(parsedComma)
}
}
App.main()
输出
▿ 2 elements
▿ 4 elements
- "Foo"
- "Bar"
- "Foo2"
- "Bar2"
▿ 4 elements
- "Line2"
- "Line2-1"
- "Line2-2"
- "Line2-3"
import Foundation
import CSVKit
struct App {
static func main() {
do {
let dummyData = "Foo;Bar;Foo2;Bar2\n\"Line2\";\"Line2-1\";\"Line2-2\";\"Line2-3\""
let csvData: [[String]] = CSVParser.shared.parse(from: dummyData)
dump(try CSVEncoder.shared.encode(from: csvData))
} catch {
fatalError(error.localizedDescription)
}
}
}
App.main()
输出
"Foo;Bar;Foo2;Bar2\r\nLine2;\"Line2-1\";\"Line2-2\";\"Line2-3\""
- First release version
- Fixed encoding validation
- Extended unit tests
- Better standard conformance (RFC 4180)
- Added encoding functionality
- New function parameters and separator handling
- Bugfixes
- First release
CSVKit 基于 Apache License 2.0 许可证发布。