Python: Cut off the last word of a sentence?

后端 未结 7 1494
攒了一身酷
攒了一身酷 2020-12-08 09:17

What\'s the best way to slice the last word from a block of text?

I can think of

  1. Split it to a list (by spaces) and removing the last item, then reco
相关标签:
7条回答
  • 2020-12-08 09:50

    Actually you don't need to split all words. You can split you text by last space symbol into two parts using rsplit.

    Some example:

    >>> text = 'Python: Cut of the last word of a sentence?'
    >>> text.rsplit(' ', 1)[0]
    'Python: Cut of the last word of a'
    

    rsplit is a shorthand for "reverse split", and unlike regular split works from the end of a string. The second parameter is a maximum number of splits to make - e.g. value of 1 will give you two-element list as a result (since there was a single split made, which resulted in two pieces of the input string).

    0 讨论(0)
  • 2020-12-08 09:50

    You should definitely split and then remove the last word because a regex will have both more complications and unnecessary overhead. You can use the more Pythonic code (assuming content is a string):

    ' '.join(content.split(' ')[:-1])
    

    This splits content into words, takes all but the last word, and rejoins the words with spaces.

    0 讨论(0)
  • 2020-12-08 09:53

    OR

    import re
    
    print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
    
    0 讨论(0)
  • 2020-12-08 09:55

    If you want to keep your current method, use ' '.join(words) to concatenate the list.

    You also might want to replace words = words[len[words -1] with words = words[:-1] to make use of list slicing.

    0 讨论(0)
  • 2020-12-08 09:58

    Get last index of space and splice the string

    >>> text = 'Python: Cut of the last word of a sentence?'
    >>> text[:text.rfind(' ')]
    'Python: Cut of the last word of a'
    
    0 讨论(0)
  • 2020-12-08 09:59

    ' '.join(words) will put the list back together.

    0 讨论(0)
提交回复
热议问题