Truncate a string without ending in the middle of a word

后端 未结 8 1816
无人共我
无人共我 2020-12-12 17:17

I am looking for a way to truncate a string in Python that will not cut off the string in the middle of a word.

For example:

Original:          \"This is          


        
8条回答
  •  抹茶落季
    2020-12-12 18:01

    I actually wrote a solution for this on a recent project of mine. I've compressed the majority of it down to be a little smaller.

    def smart_truncate(content, length=100, suffix='...'):
        if len(content) <= length:
            return content
        else:
            return ' '.join(content[:length+1].split(' ')[0:-1]) + suffix
    

    What happens is the if-statement checks if your content is already less than the cutoff point. If it's not, it truncates to the desired length, splits on the space, removes the last element (so that you don't cut off a word), and then joins it back together (while tacking on the '...').

提交回复
热议问题