从一个文本块中切出最后一个单词的最佳方法是什么?
我能想到
我目前正在采用方法#1,但我不知道如何连接列表...
content = content[position-1:position+249] # Content
words = string.split(content, ' ')
words = words[len[words] -1] # Cut of the last word
非常感谢任何代码示例。
答案 0 :(得分:125)
实际上你不需要拆分所有单词。您可以使用rsplit将文本按最后一个空格符号拆分为两个部分。
一些例子:
>>> text = 'Python: Cut of the last word of a sentence?'
>>> text.rsplit(' ', 1)[0]
'Python: Cut of the last word of a'
rsplit
是“反向拆分”的简写,与常规split
不同,它来自字符串的结尾。第二个参数是要进行的最大分割数 - 例如1
的值将为您提供两个元素的列表(因为只进行了一次拆分,这导致了两个输入字符串)。
答案 1 :(得分:11)
你绝对应该拆分然后删除最后一个单词,因为正则表达式会带来更多的复杂性和不必要的开销。您可以使用更多的Pythonic代码(假设内容是一个字符串):
' '.join(content.split(' ')[:-1])
这会将内容拆分为单词,除了最后一个单词之外的所有单词,并使用空格重新加入单词。
答案 2 :(得分:5)
如果你喜欢紧凑:
' '.join(content.split(' ')[:-1]) + ' ...'
答案 3 :(得分:4)
如果您想保留当前的方法,请使用' '.join(words)
连接列表。
您还可能希望将words = words[len[words -1]
替换为words = words[:-1]
以使用列表切片。
答案 4 :(得分:3)
' '.join(words)
会将列表重新组合在一起。
答案 5 :(得分:3)
OR
import re
print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
答案 6 :(得分:1)
获取空间的最后一个索引并拼接字符串
>>> text = 'Python: Cut of the last word of a sentence?'
>>> text[:text.rfind(' ')]
'Python: Cut of the last word of a'
答案 7 :(得分:1)
def replace_ending(sentence, old, new):
S1 = sentence
O1 = old
N1 = new
# Check if the old string is at the end of the sentence
if O1 in S1:
# Using i as the slicing index, combine the part
# of the sentence up to the matched string at the
# end with the new string
i = S1.rsplit(' ',1)[0] + str(" ") + N1
new_sentence = i
return new_sentence
# Return the original sentence if there is no match
return sentence
print(replace_ending("It's raining cats and cats", "cats", "dogs"))
# Should display "It's raining cats and dogs"