【问题标题】:list indices must be integers or slices not tuple列表索引必须是整数或切片而不是元组
【发布时间】:2018-01-07 16:03:37
【问题描述】:

我正在尝试将我的数据重新组织为特定格式,但发现卡在错误消息中。

我正在查看一个 16 列的 csv 文件,我想将第 1-5 列合并为一列,同时在其旁边附加第 10 列,同时丢弃其余列。

我有大约 30 个这样的 csv 文件,并希望将它们全部处理成一个综合列表。文件名是迭代的,但它们可以由中间的数字定义。 Ptrain0dataset, Ptrain50dataset, Ptrain100dataset ...

这是我正在处理的代码:

clist=[]
for i in range(0,17):
    a=i*50
    with open('Ptrain' + str(a) + 'dataset,csv', 'r') as f:
        temp=f.readlines()
        temp2=[]
        for i in temp:
            j=i.replace('""', '')
            temp2.append(j.split(','))
        for j in temp2:
                clist[str(a), j[0:5], j[9]]
        f.close()

堆栈跟踪:

 File "<ipython-input-23-e7da8e2724f8>", line 1, in <module>
    runfile('pfiles')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "pfiles/aa.py", line 35, in <module>
    clist[str(a), j[0:5], j[9]]

我似乎无法弄清楚这里的错误。

【问题讨论】:

  • 请分享您的堆栈跟踪的最后几行相关行
  • 你希望clist[str(a), j[0:5], j[9]] 做什么?
  • @user2357112 我想追踪每列的来源(在 30 多个 csv. 文件中)。由于文件是用分配的编号标识的(50 个间隔)

标签: python csv


【解决方案1】:

错误在这一行:

clist[str(a), j[0:5], j[9]]

您正在通过元组而不是整数来索引 list

【讨论】:

  • 这听起来可能很愚蠢,但我认为元组是用 (,) 而不是 [] 创建的?
  • @Kimmy,元组是用逗号创建的,例如:my_tuple = 4,5,在你的情况下:str(a), j[0:5], j[9] 是一个元组。
猜你喜欢
  • 1970-01-01
  • 2017-10-02
  • 2019-09-15
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
相关资源
最近更新 更多