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

Python读取CSV并切片行构建DataFrame遇属性错误求助

解决AttributeError及CSV特殊分隔符处理问题

首先,你遇到的AttributeError: 'list' object has no attribute 'split'是因为csv.reader读取每一行后,会自动将内容拆分为列表(默认按逗号分隔,如果你指定delimiter='|'则按|拆分)。所以row[0:23]返回的是列表的切片,依然是列表,而split()是字符串专属方法,自然会报错。

既然Excel的分隔符设置无效,说明你的CSV文件里的|既有作为分隔符的,也有作为内容的,不能直接用常规分隔方法拆分。我们需要根据你给出的目标格式,手动处理每行的原始字符串。

实现步骤

  1. 直接读取文件的原始行(跳过csv.reader自动拆分的步骤)
  2. 根据目标列的规则,拆分每行字符串
  3. 将拆分后的内容整理成DataFrame

示例代码

import pandas as pd

# 存储每一行的处理结果
data = []

with open('actions2.csv', 'r') as csvfile:
    for line in csvfile:
        # 去除首尾的换行符和多余的|
        line_clean = line.strip('\n').strip('|')
        # 第一步:拆分出col1(ab/5)和剩余内容
        col1_part, rest = line_clean.split(' ', 1)
        # 第二步:将剩余内容按|拆分,取前两部分拼接成col2
        split_rest = rest.split('|')
        col2 = f"{split_rest[0]}|{split_rest[1].strip()}"
        # 第三步:拆分出col3(ghj))
        col3_part = split_rest[2].strip().split(' ', 1)[0]
        # 将结果添加到列表
        data.append({
            'col1': col1_part,
            'col2': col2,
            'col3': col3_part
        })

# 构建DataFrame
df = pd.DataFrame(data)
print(df)

代码说明

  • 直接遍历文件的line获取原始字符串,避免csv.reader的自动拆分干扰
  • line.strip('\n').strip('|'):去除每行首尾的换行符和多余的|
  • split(' ', 1):只按第一个空格拆分,确保col1准确获取ab/5,剩下的内容保留所有原始格式
  • 对剩余内容按|拆分后,将前两部分重新用|拼接,得到col2的内容(保留了内容里的|)
  • 从第三部分拆分出ghj),忽略后面的无关内容

测试结果

用你给出的示例行测试,处理后得到的DataFrame会是:

col1col2col3
ab/5(cd ef 6text1/123 (lala

如果你的CSV行有其他变体,可以根据实际的字符位置调整拆分规则,比如用正则表达式来匹配更精准的拆分点(比如匹配ab/5之后的内容,或者ghj)的位置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:02