尝试将一个列表拆分成多个子列表 - Python
出于某种原因,当我尝试把用逗号分隔的项目分割成一个新列表,然后再把它们放进一个更大的列表时,我遇到了这个错误信息:
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']]
>>>