如何将长字符串的列表拆分为具有较短字符串的新列表?



我想把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(),你需要将它声明为一个变量。

最新更新