For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素
Posted
技术标签:
【中文标题】For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素【英文标题】:For loop is taking all elements of a list into different txt files instead iterating throug each one in python 【发布时间】:2021-03-28 11:24:51 【问题描述】:我尝试创建不同的唯一文件,并为每个文件添加另一个列表的元素,但不是遍历每个元素,而是将列表的整个元素放入每个文件中。
new_list = ['a','b','c','d','e','f','g','h','i','j'] # txt files
dummy = [1,2,3,4,5,6,7,8,9,10] # elements to add to the txt files
这是我尝试过的代码,
for j in new_list:
filename = '.txt'.format(j)
with open(filename, 'w') as f:
for i in dummy:
f.write('\n'.format(i))
创建文件的循环运行良好,但第二个循环尝试写入每个文件迭代的每个元素不起作用,而是获取列表中的所有元素并将它们写入每个文件。
我希望将 dummy 的第一个元素写入 new_list 的第一个文件中,依此类推...
我做错了什么?
【问题讨论】:
您正在循环遍历并将每个元素写入此处for i in dummy: f.write('\n'.format(i))
使用 for i, j in zip(dummy, new_list):
并摆脱另一个 for 循环。
【参考方案1】:
如果您想向每个文件写入单个元素,则不需要内部循环。您可以使用zip()
进行简单的解决方案
for name, data in zip(new_list, dummy):
with open(f'name.txt', 'w') as fp:
fp.write(str(data))
【讨论】:
我正在尝试你的代码,但我得到了下一个 TypeError: 'str' object is not callable, 我试图找出是什么原因造成的 您的代码中是否有名称为“str”的变量?str
是 python 关键字,不要用它作为变量名【参考方案2】:
您正在循环遍历每个元素并将每个元素写入每个文件的新行。
for i in dummy:
f.write('\n'.format(i))
相反,您需要为每个文件获取一个元素。 如果列表大小相同,我们可以执行以下操作。
for index, j in enumerate(new_list): # Enumerate returns an index: int, value: T pair
filename = '.txt'.format(j)
with open(filename, 'w') as f:
f.write('\n'.format(dummy[index])) # Grab the dummy element associated with the current file
【讨论】:
太棒了!我完全错过了索引关系,在以后的代码中记住这一点会很有用以上是关于For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素的主要内容,如果未能解决你的问题,请参考以下文章