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中遍历每个元素的主要内容,如果未能解决你的问题,请参考以下文章

Python:利用for循环比较两个列表元素的异同进而找出共有元素各自不同元素并全部导出到csv文件实现代码

循环列表列表并保存不同的文件

如何将长文本文件字段放入列表框?

fileinput模块用法

文本文件字符串拆分然后将每个元素输出到视图表中

如何使用 lapply 将列表元素放入不同的数据框中