(Python)如何将文件中的每一行切成三分之一,并将每三分之一添加到不同的列表中



我有一项任务要用Python创建一个达达主义的cutup程序,该程序将一个文件垂直切割成三分之一并重新排列。我试图读取文件中的每一行,将其分成三分之一,并将每三分之一添加到不同的列表中。这是我对该部分的代码:

lorem = open("lorem.txt","r")
lorem.readlines()
a = []
b = []
c = []
for line in lorem:
n = int(len(line) / 3)
splits = [line[i:i+n] for i in range(0, len(line), n)]
a.append(splits[0])
b.append(splits[1])
c.append(splits[2])
print(a)
print(b)
print(c)
lorem.close()

我已经打印了列表,看看是否添加了剪切行,但它只打印了3个空列表。我没有收到任何错误消息,所以我无法确定问题是什么。任何解释都会非常有帮助,我真的在这个主题上落后了。

当您调用readlines时,您将读取文件的所有内容,并将文件指针移动到文件的末尾。在脚本末尾会得到空列表,因为一旦到达for循环,就已经将文件指针移动到了整个文件上——没有什么可循环的了。查看有关文件对象方法的文档。

如果你想调用readlines,那么不要这样:

lorem = open(...)
lorem.readlines()
...
for line in lorem:

你需要做

with open(...) as f:  # This will close the file for you
lorem = f.readlines()  # Store the contents of the file in a variable
...
for line in lorem:

您也可以在文件对象本身上循环:

with open(...) as f:
for line in f:
...

相关内容

最新更新