【问题标题】:Split a list into multiple sequential files将列表拆分为多个顺序文件
【发布时间】:2020-03-29 03:19:30
【问题描述】:

我有一个包含 2000 多个笑话的文件,我已经对其进行了一些预处理,现在将它们列在一个列表中。我想打印它们,以便每个文本文档有 20 个(最后一个文档可能更少)并且它们按顺序编号(jokeset1.txt、jokeset2.txt 等),但是当我尝试做类似的事情时这个,它只创建第一个和最后一个文档。我该如何解决这个问题?

i = 0
while len(jokes)>0:
    i+=1
    with open('Jokeset/jokeset' + str(i)+'.txt', 'w') as newfile:
        if len(jokes)<20:
            x = len(jokes)
        else:
            x = 20
        random.shuffle(jokes)
        for i in range(x):
            print(jokes[i], file = newfile)
        del jokes[:x]

【问题讨论】:

  • 您在两个不同的地方使用i:文件编号和for循环。更改其中一个名称。更一般地,您可以通过为变量指定有意义的名称来避免此类错误。 set_number 会比 i...

标签: python text-processing


【解决方案1】:

您正在循环内重写您的 i 变量!

你有i = 1 用于循环的第一次运行,所以第一个文件被写入,但是当你这样做时

for i in range(x):
    print(jokes[i], file = newfile)

变量变为i = 19。然后,您只需在外循环开始时执行i += 1,然后您将写入一个名为'Jokeset/jokeset20.txt' 的文件。而且这种情况一遍又一遍地发生,因此没有其他文件被写入。

只需重命名您的 i 变量之一,您就可以了!

【讨论】:

  • 哦,这么简单的错误!感谢您的建议!
猜你喜欢
  • 2016-09-01
  • 2014-07-29
  • 2017-10-01
  • 1970-01-01
  • 2018-11-25
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
相关资源
最近更新 更多