У меня есть текстовый файл, который выглядит так:
>Начало группы
текст 1
текст2
>Начало новой группы
текст3
Я пытался использовать itertools.groupby
для возврата групп, где каждая группа представляет собой список списков, содержащих:
1) строка, начинающаяся с символа «>».
2) строки текста, следующие за строкой, начинающейся с символа «>», до следующей строки, начинающейся с символа «>».
Итак, из предыдущего текста я ХОЧУ получить:
[['>Start of group', text1, text2], ['>Start of new group', text3]]
Код, который я написал до сих пор:
with open(filename) as rfile:
groups = []
for key, group in groupby(rfile, lambda x: x.startswith(">")):
groups.append(list(group))
Однако это создает список списков, где каждая строка файла находится в своем собственном списке, например:
[['>Start of group'],[text1],[text2],['>Start of new group'],[text3]]
Я думаю, что, вероятно, просто не очень хорошо понимаю функцию groupby, так как я впервые пытаюсь ее реализовать, поэтому любое объяснение приветствуется.
itertools.groupby
имеет группы элементов с общими характеристиками, например. сгруппировать все прописные буквы, сгруппировать все слова, начинающиеся с foo. Здесь было бы сложнее использовать, так как вы действительно просто хотите разделить строку до некоторого условия. См. здесь когда использоватьgroupby
- person pylang   schedule 20.05.2019