Python 从文本文件创建列表列表

Python 从文本文件创建列表列表,python,file,list,Python,File,List,我正在尝试从文本文件创建列表列表。我的文本文件包含不同的类别,每个类别包含三个句子。看起来有点像这样: Sentence 1 Sentence 2 Sentence 3 Sentence 1 Sentence 2 Sentence 3 Sentence 1... etc. 我想阅读这些,并将每个类别保存到一个列表中,然后列出这些列表/类别。不幸的是,到目前为止,我所有的尝试都失败了,因为他们一次只能处理一行。类别之间的空行是一个分区。 可以使用列表理解: with open('fi

我正在尝试从文本文件创建列表列表。我的文本文件包含不同的类别,每个类别包含三个句子。看起来有点像这样:

Sentence 1 
Sentence 2 
Sentence 3

Sentence 1 
Sentence 2 
Sentence 3

Sentence 1... etc.

我想阅读这些,并将每个类别保存到一个列表中,然后列出这些列表/类别。不幸的是,到目前为止,我所有的尝试都失败了,因为他们一次只能处理一行。类别之间的空行是一个分区。

可以使用列表理解:

with open('file', 'r') as f:
    data = f.readlines()
    result = [ data[i:i+3] for i in range(0,len(data),4)]

发生的事情是,
data
包含每个句子,
data[i:i+3]
是一个类别,我使用列表理解来创建类别列表。

您可以使用
itertools.groupby

>>> from itertools import groupby
with open('filename') as f:
    lis = [map(str.strip, g) for k,g in 
                             groupby(f, key = lambda x : not x.strip()) if not k]
...     
>>> lis
[['Sentence 1', 'Sentence 2', 'Sentence 3'],
 ['Sentence 1', 'Sentence 2', 'Sentence 3'],
 ['Sentence 1']]
如果文件很小,则也可以:

with open('abc1') as f:
    print [map(str.strip, x.rsplit('\n'))  for x in f.read().rsplit('\n\n')]
...     
[['Sentence 1', 'Sentence 2', 'Sentence 3'],
 ['Sentence 1', 'Sentence 2', 'Sentence 3'],
 ['Sentence 1']]

它将是python的一行:)

它是如何工作的

open(“file”).read().split(“\n\n”)
打开文件,读取它并在按双回车键划分的块上拆分

list(l表示e.split中的l(“\n”),如果l)
将一个块(命名为
e
)拆分为行,并从中生成列表<代码>如果l用于消除空行,如果您使用了两次以上的输入或获得了空的lasy行


最后一件事是连接它-
result=list(表达式1中e的表达式2)
-我们只需在
expression\u 1
的每个块上使用
expression\u 2
,并从中生成列表。简单地用一行:)

您的文本文件有多大?请尝试:
open('abc.txt').read().split('\n\n')
。我有五个类别,所以它很小!
result = list(list(l for l in e.split("\n") if l) for e in open("file").read().split("\n\n"))