CSVKit

Build Status Swift

CSVKit 是一个非常简单、快速且轻量级的 CSV 解析和编码库,用于 Swift 编程。

该解析器读取 String 或 Data 对象,并将 CSV 字段解析为字符串数组。每个根元素对应于数据的一行。

功能特性

安装

Swift Package Manager

将以下内容添加到您的 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\""

更新日志

版本 1.0

- First release version

版本 0.0.5

- Fixed encoding validation
- Extended unit tests

版本 0.0.4

- Better standard conformance (RFC 4180)

版本 0.0.3

- Added encoding functionality
- New function parameters and separator handling

版本 0.0.2

- Bugfixes

版本 0.0.1

- First release

许可证

CSVKit 基于 Apache License 2.0 许可证发布。