尝试将一个列表拆分为主列表中的多个列表-Python

2024-06-06 22:56:40 发布

您现在位置: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']

我基本上想把列表中每个逗号分隔的信息变成一个单独的列表,所以基本上是一个主列表中的一堆列表。

谢谢!


Tags: textinfrom列表futurepeopleanalyzepersonal
3条回答

这个。。。

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

可能是这个。。。

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

第一个例子中的问题是使用x作为text的索引,但是文本是字符串数组,因此x始终是字符串,使用字符串作为text[x]的数组索引会引发错误,因为数组索引必须是整数。我的示例通过枚举text纠正了这一点,它不会将字符串联机返回为line,而是将行数返回为index。希望这是有道理的,我建议你在得到它之前好好玩玩。

您在错误消息中有所需的信息:

TypeError: list indices must be integers, not str

你可能不会做这样的事情:

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']]
>>>

那怎么办

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

相关问题 更多 >