问题
What's the best way to slice the last word from a block of text?
I can think of
- Split it to a list (by spaces) and removing the last item, then reconcatenating the list.
- Use a regular expression to replace the last word.
I'm currently taking approach #1, but I don't know how to concatenate the list...
content = content[position-1:position+249] # Content
words = string.split(content, ' ')
words = words[len[words] -1] # Cut of the last word
Any code examples are much appreciated.
回答1:
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).
回答2:
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.
回答3:
If you like compactness:
' '.join(content.split(' ')[:-1]) + ' ...'
回答4:
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.
回答5:
' '.join(words)
will put the list back together.
回答6:
OR
import re
print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
回答7:
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'
来源:https://stackoverflow.com/questions/6266727/python-cut-off-the-last-word-of-a-sentence