You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无csv模块拆分CSV文件并转换为3D数组技术咨询

嘿,这两个CSV处理的问题我刚好有经验,给你详细说说!

1. 如何在Python中通过逗号拆分CSV文件?

拆分CSV文件要分两种情况,毕竟CSV里有时候会有被引号包裹的逗号(比如单元格内容是"张三,李四"),这种直接用split(',')会出错,得区别处理:

简单场景(无引号包裹的逗号)

如果你的CSV里没有带逗号的单元格,直接读取每行后用split(',')拆分就行,简单粗暴:

with open('your_file.csv', 'r', encoding='utf-8') as f:
    for line in f:
        # 先去掉换行符,再拆分
        row_data = line.strip().split(',')
        print(row_data)  # 每行都会被拆成一个列表

复杂场景(含引号包裹的逗号)

要是CSV里有带逗号的单元格,就得手动处理引号逻辑——判断当前是否在引号内,只有不在引号里的逗号才用来拆分:

def split_csv_line(line):
    parts = []
    current_part = []
    in_quotes = False  # 标记是否处于引号内部

    for char in line.strip():
        if char == '"':
            # 遇到引号就切换标记状态
            in_quotes = not in_quotes
        elif char == ',' and not in_quotes:
            # 只有不在引号里的逗号才拆分
            parts.append(''.join(current_part))
            current_part = []
        else:
            # 其他字符直接加入当前单元格
            current_part.append(char)
    # 别忘了添加最后一个单元格
    parts.append(''.join(current_part))
    return parts

# 使用示例
with open('your_file.csv', 'r', encoding='utf-8') as f:
    for line in f:
        row_data = split_csv_line(line)
        print(row_data)
2. 不使用csv模块将CSV文件转换为3D数组?

首先我默认你说的3D数组是**「行 → 单元格 → 单元格内的子元素」**的结构(比如单元格内容是"1,2,3",拆成['1','2','3']),实现思路是先把每行拆成单元格列表(二维),再把每个单元格拆成子元素列表(升级为三维):

直接用上面的split_csv_line函数处理每行,然后对每个单元格再做一次逗号拆分:

def split_csv_line(line):
    parts = []
    current_part = []
    in_quotes = False

    for char in line.strip():
        if char == '"':
            in_quotes = not in_quotes
        elif char == ',' and not in_quotes:
            parts.append(''.join(current_part))
            current_part = []
        else:
            current_part.append(char)
    parts.append(''.join(current_part))
    return parts

def csv_to_3d_array(file_path):
    three_d_array = []
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            # 第一步:拆分出当前行的所有单元格(二维结构的一行)
            row_cells = split_csv_line(line)
            # 第二步:把每个单元格再拆成子元素,得到三维结构的一行
            three_d_row = [cell.split(',') for cell in row_cells]
            three_d_array.append(three_d_row)
    return three_d_array

# 测试一下
my_3d_data = csv_to_3d_array('test.csv')
print(my_3d_data)

举个例子,如果你的test.csv内容是:

"apple,banana","cherry"
"dog,cat","elephant,frog"

运行后得到的3D数组就是:

[
    [['apple', 'banana'], ['cherry']],
    [['dog', 'cat'], ['elephant', 'frog']]
]

内容的提问来源于stack exchange,提问作者Ethan Wallace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:28:00