在python中,如何将很长的字符串拆分为较短的字符串列表

在python中,如何将很长的字符串拆分为较短的字符串列表,python,django,django-queryset,python-2.6,Python,Django,Django Queryset,Python 2.6,在我当前的django项目中,我有一个模型,它存储非常长的字符串(每个DB条目可以有5000-10000个甚至更多的字符),然后当用户调用记录时,我需要拆分它们(它确实需要在DB中的一个记录中)。我需要的是它返回一个较短字符串的列表(queryset?取决于是在“SQL”部分还是按原样获取所有列表并在视图中进行解析)(我返回到模板的列表中每个字符串100-500个字符) 我在任何地方都找不到PythonSplit命令、示例或任何类型的答案 我总是能数数单词和附加词,但数数单词。。。。但我相信这类

在我当前的django项目中,我有一个模型,它存储非常长的字符串(每个DB条目可以有5000-10000个甚至更多的字符),然后当用户调用记录时,我需要拆分它们(它确实需要在DB中的一个记录中)。我需要的是它返回一个较短字符串的列表(queryset?取决于是在“SQL”部分还是按原样获取所有列表并在视图中进行解析)(我返回到模板的列表中每个字符串100-500个字符)

我在任何地方都找不到PythonSplit命令、示例或任何类型的答案

我总是能数数单词和附加词,但数数单词。。。。但我相信这类事情一定有某种功能

编辑:谢谢大家,但我想我没有被理解

例如:

字符串:“这是一个非常长的字符串,包含许多句子,我不能用一个字符来分割,只能用字数来分割”

该字符串是django模型的文本字段

我需要将其拆分,让我们每5个单词说一次,这样我将得到:

[“这是一个很长的字符串”,“有很多”,“还有更多的句子和”,“没有一个字符”,“我可以用它来”,“按数字分割”,“单词数”]

问题是,几乎所有编程语言都有“按字数拆分”的实用函数,但我在python中找不到

谢谢, Erez有一个想法:

def split_chunks(s, chunksize):
    pos = 0
    while(pos != -1):
        new_pos = s.rfind(" ", pos, pos+chunksize)
        if(new_pos == pos):
            new_pos += chunksize # force split in word
        yield s[pos:new_pos]
        pos = new_pos

试图将字符串分割成最多的块<代码> CukStase<代码>长度。它试图在空格上分裂,但如果不能分割,则在单词的中间分裂:

>>> foo = "asdf qwerty sderf sdefw regf"
>>> list(split_chunks(foo, 6)
['asdf', ' qwert', 'y', ' sderf', ' sdefw', ' regf', '']
我想这需要一些调整(例如如何处理单词内部出现的拆分),但它应该为您提供一个起点


要按字数拆分,请执行以下操作:

def split_n_chunks(s, words_per_chunk):
    s_list = s.split()
    pos = 0
    while pos < len(s_list):
        yield s_list[pos:pos+words_per_chunk]
        pos += words_per_chunk
def分割块(每个块的单词):
s_list=s.split()
pos=0
当pos
为了让问题更清楚,您可能应该添加一个示例。我更新了我的答案,以按字数拆分。您看过django ulits中的wrap吗?模板过滤器是否也有类似的功能-10x'这很好,实际上我的很长文本也不错:-)
>>> s = "This is a very long string with many many many many and many more sentences and there is not one character that i can use to split by, just by number of words"
>>> l = s.split()
>>> n = 5
>>> [' '.join(l[x:x+n]) for x in xrange(0, len(l), n)]
['This is a very long',
 'string with many many many',
 'many and many more sentences',
 'and there is not one',
 'character that i can use',
 'to split by, just by',
 'number of words']