我在python中有一个包含4个元素的列表,这些元素本身就是行列表(文本)
我想用编号的文件名保存这些元素。你知道吗
for n in textblock:
for line in textblock[n]:
with open('file_{0}.dat'.format(n),'w') as ffile:
ffile.write(textblock[n[line]])
ffile.close()
我收到错误消息:
for line in textblock[n]:
TypeError: list indices must be integers, not list
有什么提示我能做些什么来修复它吗?你知道吗
如果使用
for n in textblock:
遍历textblock
,则n
将获取textblock
中每个项的值(因此n
是list
)。如果您尝试获取textblock[n]
,那么您尝试使用列表n
作为索引。你知道吗你只需要:
不要尝试关闭
ffile
——它是由with
块自动关闭的。你知道吗如果你想在文件名中使用索引,我想你想要的是这样的:
^{} 将在遍历列表时为您提供索引和项。你知道吗
您可以使用
enumerate
注意
with open
将处理close()
。你知道吗for i in [1,2,3]
在每个iteration
中给出1,2,3
。不需要[1,2,3][i]
让我们澄清一下您的数据结构。听起来是这样的:
因此,让我们使用python的iterable for循环结构遍历外部列表。你知道吗
但是我们想使用
outer_list
中inner_list
的位置将每个inner_list
的内容写入一个文件。让我们使用内置的enumerate()
函数来获取位置。你知道吗让我们检查一下将
inner_list
写入文件。你知道吗所有这些加起来就是:
编辑:这里还需要一个步骤,正如@mhawke所指出的
write()
方法要求向它传递一个字符串。我们可以很容易地将我们的内部列表转换成字符串。我首选的方法是使用join()
方法。我们可以指定用一个新行字符连接inner_list
中的每个字符串,这样它就可以很好地打印,即因此,我们的最终解决方案是:
相关问题 更多 >
编程相关推荐