我想把text of a novel
分成它的chapters
,这些章节再分成chucks of 1000 words
。我已经用我的章节创建了一个列表,但现在我不知道如何将那些list-elements
自动分割成另一个列表,为每个章节创建一个列表。
我可以为一个元素这样做,但是我真的卡在这里了。我不认为解决方案很复杂,但我就是不明白。(我猜某种循环会起作用吗?)
text = chapters[1]
text = text.split()
n = 1000
batch = [' '.join(text[i:i+n]) for i in range(0,len(text),n)]
用字典还是用数据帧,这是更好的工作方式吗?提前感谢!
这是你要找的吗?
每一章都是批处理的,然后其中是一个以1000个单词分隔的所有单词的数组。所以要访问第1000个单词,它是batch[0][0]
。第三章,5000-5999字-batch[2][4]
.
batch=[]
for text in chapters:
print(text)
text = text.split()
n = 1000
batch.append([' '.join(text[i:i+n]) for i in range(0,len(text),n)])
如果需要一行代码,则结果将是列表的列表的列表。
您提供了一个章节列表,需要将其转换为大小为n的块列表(另一个列表),因此代码将像这样:
chapters = [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed maximus euismod turpis sit amet venenatis.",
"Nunc a volutpat enim, vel sollicitudin est. Maecenas semper condimentum scelerisque.",
]
n = 5
rc = [[s[i:i+n] for i in range(0, len(s), n)] for c in chapters if (s := c.split())]
结果如下所示:
# List of chapters
[
# List of chunks
[
# List of words
['Lorem', 'ipsum', 'dolor', 'sit', 'amet,'],
['consectetur', 'adipiscing', 'elit.', 'Sed', 'maximus'],
['euismod', 'turpis', 'sit', 'amet', 'venenatis.']
],
[
['Nunc', 'a', 'volutpat', 'enim,', 'vel'],
['sollicitudin', 'est.', 'Maecenas', 'semper', 'condimentum'],
['scelerisque.']
],
]
为了不多次计算split()
,你需要将它声明为一个变量。