首页 > 解决方案 > 将列表中的每 N 个元素写入多个文本文件

问题描述

我正在尝试将嵌套列表中的每 N 个项目写入多个 .txt 文件。棘手的部分是将每组 N 个元素写入一个文本文件。

我的列表: list = ['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c','item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']

我想要以下 .txt 文件输出:

text1.txt: item1a item1b item1c \n item2a \n item3a item3b
text2.txt: item4a item4b item4c \n item5a \n item6a item6b
text3.txt: item7a item7b item7c \n item8a \n item9a item9b

目前,每个嵌套列表都写入单个 .txt 文件。分组不是我需要的。我好近!我认为这应该是一个小问题。

例如:

text1.txt: item1a item1b item1c
text2.txt: item2a
text3.txt: item3a item3b

我的代码

list = ['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c',
'item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']
for item, biglist in enumerate(list):
    f=open(outdir_name + "text" + str(item+1)+".txt","w")
    f.write(biglist + "\n".format(list))
    f.close()

目前,每个嵌套列表都写入单个 .txt 文件。分组不是我需要的。我好近!我认为这应该是一个小问题。

例如:

text1.txt: item1a item1b item1c
text2.txt: item2a
text3.txt: item3a item3b

标签: pythonpandasloopstext-files

解决方案


这完成了工作!

items_per_file = 3
your_list=['item1a item1b item1c','item2a','item3a item3b','item4a item4b item4c','item5a','item6a item6b','item7a item7b item7c','item8a','item9a item9b']
for item in range(0, len(your_list), items_per_file):
    f=open(outdir_name + 'text' + str((item//items_per_file)+1)+".txt","w")
    f.write("\n".join(your_list[x] for x in range(item, min(item+items_per_file, len(your_list) - 1))))
    f.close()

解释:

  • 在与for-loop一致,我正在采取步骤items_per_file;
  • 在该f.open行中,文件名是item // items_per_file因为没有// items_per_file你会得到text1, text4, text7, ...;
  • 在 中f.write line,我正在写items_per_file项目;

更新:

  • 现在您可以轻松更改items_per_file
  • 现在它也应该适用于your_list八个项目中的一个(不可除以items_per_file

推荐阅读