如何将 Python CSV 字符串转换为数组?

2025年1月5日 | 阅读 4 分钟

引言

可以使用 `csv` 模块和用于字符串操作的 `StringIO` 模块将 Python CSV 字符串转换为数组。首先导入这两个模块。然后,可以通过创建带有 CSV 字符串的 `StringIO` 对象并将其传递给 `csv.reader()` 来读取 CSV 数据。通过迭代 reader 对象并将其添加到数组中来提取每一行。现在,您的 CSV 内容将被保存为数组的数组。如果 CSV 字符串中存在任何非 ASCII 字符,请不要忘记处理任何必需的解码。此方法有效地将 CSV 字符串解析为易于理解的数组结构,以便 Python 可以用于进一步处理。

使用 `splitlines()` 和 `inner.split()` 方法

使用 `splitlines()` 首先按行分割字符串并创建行列表,您可以使用 `split()` 和 `splitlines()` 将 Python CSV 字符串转换为数组。接下来,使用 `split()` 循环遍历每一行,并使用逗号将其分割成单独值的列表。通过将这些列表附加到一个主数组中,CSV 数据将表示为二维数组。确保处理特定实例,例如包含逗号的带引号的值。此技术为将 CSV 字符串解析为数组提供了一种直接的方法;当 CSV 格式定义良好且不需要复杂的解析功能时,它很合适。

示例

输出

[['Name', ' Age', ' City'], ['John', ' 25', ' New York'], ['Alice', ' 30', ' London'], ['Bob', ' 28', ' Paris']]

说明

此代码使用 CSV 字符串转换为二维数组。使用 `splitlines()`,首先将字符串拆分成行,然后逐行迭代。循环内使用 `separate(',')` 将每一行分割成其组成值,从而为每一行生成一个值列表。通过将这些列表附加到 `csv_data`,最终形成表示 CSV 数据的二维数组。对于没有复杂解析需求的基本 CSV 结构,此方法提供了易于使用的将 CSV 字符串解析为数组的方法。

使用 CSV 库的 `reader()` 方法

使用 Python 的 `csv` 模块中的 `reader()` 方法可以更轻松地解析 CSV。导入 `csv` 模块后,通过将 CSV 字符串传递给 `reader()` 来构建一个 reader 对象。该对象可以智能地分割值并迭代行,自动处理复杂的解析。每一行中的值都被转换为列表,组合起来就形成了一个表示 CSV 数据的二维数组。`csv.reader()` 方法通过处理包含逗号或换行符的带引号值等细微差别来确保解析的准确性。此简化方法最大限度地减少了手动解析的需求,使其成为处理大型数据集或各种格式的 CSV 数据的理想选择。

示例

输出

[['Name', ' Age', ' City'], ['John', ' 25', ' New York'], ['Alice', ' 30', ' London'], ['Bob', ' 28', ' Paris']]

说明

此代码演示了如何使用 `csv.reader()` 方法解析 CSV 字符串。为了模拟一个包含 CSV 字符串的类文件对象,它首先创建一个 `StringIO` 对象。接下来,使用 `csv.reader()` 创建一个 reader 对象。该 reader 对象通过迭代每一行并自动处理 CSV 解析来智能地分割值。通过使用 `list(csv_reader)` 将 reader 对象转换为列表的列表,将 CSV 数据存储在二维数组结构中。此方法通过简化 CSV 解析并有效地处理包含逗号或换行符的带引号值等特殊情况,从而简化了数据处理。

结论

可以使用多种方法将 Python CSV 字符串转换为数组。`split()` 和 `splitlines()` 需要手动处理;它们可以很好地处理基本的 CSV 结构。另一方面,使用 `csv` 库的 `csv.reader()` 函数支持各种 CSV 格式,可以简化解析过程。每种方法都有其优点,具体取决于处理需求和 CSV 的复杂性。这些方法简化了 CSV 处理,使开发人员能够有效地管理和修改 Python 程序中的 CSV 数据,无论他们倾向于健壮性还是简洁性。