Python - 附加范围不能拆分

时间:2014-12-18 15:05:08

标签: python

当我尝试

anylist.append([var[x:y].split()])

我收到错误

AttributeError: 'list' object has no attribute 'split'

但是

anylist.append([var[x].split()])

工作正常。 所以有人可以告诉我:如何将一系列变量附加到我的列表中并仍然可以分割项目?

干杯

PS: 这应该被纳入循环

for j in range(0,z):

所以,对于每一个j,我想要一个不同范围的变量作为一个项目,该项目应该被拆分。

修改 好的,我试着更清楚我的问题,所以最好理解: 我想处理以下格式的文件

480
STEP: 1
Ele  x  y  z
Ele  x  y  z
...
480
STEP: 2
Ele  x  y  z
...

现在,每个块以'480'开头并且长度为480 + 2行(由于块中的前两行,因此为+2)。

我尝试实现的是将每个块'STEP:x'放到我的列表中的一个项目中,并且应该拆分此步骤中的行。 因此列表最终应该像

[
 [[  480],[STEP:1],[Ele, x, y, z],[Ele, x, y, z],...],
 [[  480],[STEP:2],[Ele, x, y, z],[Ele, x, y, z],...],
 [[  480],[STEP:3],...]]
]

以便稍后我可以处理类似

的内容
if 3 <= float(anylist[0][3][1] <= 5
... do something...

我要检查,如果在第一个块(步骤:1)中,x值介于3到5之间。

回到我的问题,我想做这样的事情:

trj_list = []
for i in range(0,nsteps):
  for j in range(0,nat):
    trj_list.append(lines[j*nat:j*nat+nat])

该文件的总长度为nat * nsteps。第一个循环超过nsteps = 2001,第二个循环超过nat = 482。 对于每个j,第二个循环应该将所有行(从0-482)附加到列表中的列表,并且应该拆分项目。 所以第一个循环应该遍历所有'STEP:x',第二个循环应该遍历一个块中的所有行(即482行)。

但问题出现在最后一个'trj_list.append'命令中,因为当我在'lines [x:y]'中使用一个范围时,我无法拆分。

2 个答案:

答案 0 :(得分:0)

问题在于,如果您正在切片,则会返回列表而不是单个对象。您可以使用简单的列表推导来对列表中的每个对象/字符串进行拆分:

anylist.append([e.split() for e in var[x:y]])

答案 1 :(得分:0)

我发现了另一种方法:

for i in range(var):
  anylist.append([var[i].split()])

我认为这也不应该加载内存