尝试将一个列表拆分成多个子列表 - Python

3 投票
5 回答
10726 浏览
提问于 2025-04-17 01:50

出于某种原因,当我尝试把用逗号分隔的项目分割成一个新列表,然后再把它们放进一个更大的列表时,我遇到了这个错误信息:

Traceback (most recent call last):
  File "S:/Personal Folders/Andy/Python Projects/People Cancelled/Analyze Customers Test.py", line 15, in <module>
    text[x] = textnew
TypeError: list indices must be integers, not str

这是我的代码:

from __future__ import division
from __future__ import print_function

in_file = open("s:/Personal Folders/Andy/Python Projects/People Cancelled/Analyze Authorize Truncated.csv")
text = in_file.readlines()
in_file.close()

header = text[0:1]
text = text[1:]

for x in text:
    textnew = x.split(",")
    text[x] = textnew

print(text)

这是我使用的数据示例:

['3545869260,59.95,AUTH_CAPTURE,Jack,Franklin,810-555-2222,jack@francypants.com,01-Apr-2011 05:24:10 PM PDT\n', '354589999,0,VOID,Jacob,Rasnip,8224309464,goodness@finland.com,01-Apr-2011 05:24:10 PM PDT\n']

我基本上想把列表里面每个用逗号分开的信息变成一个单独的列表,也就是说,想要在一个主列表里面放很多小列表。

谢谢!

5 个回答

0

那关于这个呢

result = []
for x in text:
    textnew = x.split(",")
    result.append(textnew)
print(result)
4

这个...

for x in text:
    textnew = x.split(",")
    text[x] = textnew

可能应该是这个...

for index, line in enumerate(text):
    text[index] = line.split(',')

第一个例子的问题在于,你把 x 当作 text 的索引来用,但 text 是一个字符串数组,所以 x 永远是一个字符串。用字符串作为数组的索引,比如 text[x],会出错,因为数组的索引必须是整数。我的例子通过对 text 进行枚举来解决这个问题,这样不仅返回了字符串 line,还返回了行号 index。希望这样解释能让你明白;我建议你多试试,直到你理解为止。

3

错误信息里已经告诉你问题所在:

类型错误:列表的索引必须是整数,而不是字符串

你可能想要做的是这样的事情:

the_new_list = [x.split(',') for x in text]

举个例子:

>>> text = [
... '3545869260,59.95,AUTH_CAPTURE,Jack,Franklin,810-555-2222,jack@francypants.com,01-Apr-2011 05:24:10 PM PDT\n',
... '354589999,0,VOID,Jacob,Rasnip,8224309464,goodness@finland.com,01-Apr-2011 05:24:10 PM PDT\n']
>>> the_new_list = [x.split(',') for x in text]
>>> import pprint
>>> pprint.pprint(the_new_list)
[['3545869260',
  '59.95',
  'AUTH_CAPTURE',
  'Jack',
  'Franklin',
  '810-555-2222',
  'jack@francypants.com',
  '01-Apr-2011 05:24:10 PM PDT\n'],
 ['354589999',
  '0',
  'VOID',
  'Jacob',
  'Rasnip',
  '8224309464',
  'goodness@finland.com',
  '01-Apr-2011 05:24:10 PM PDT\n']]
>>>

撰写回答