是否有一种很好的(呃)方法来查找字符串中单词的结束索引?
我的方法是这样的:
text = "fed up of seeing perfect fashion photographs"
word = "fashion"
wordEndIndex = text.index(word) + len(word) - 1
答案 0 :(得分:1)
我不能评论这是否是一种更好的方法,但是你所建议的替代方法是找到该词之后的下一个空格并使用它来获得索引。
text = "fed up of seeing perfect fashion photographs"
word = "fashion"
temp = text.index(word)
wordEndIndex = temp + text[temp:].index(' ') - 1
你的方法似乎更自然,也可能更快。
答案 1 :(得分:1)
这取决于您是否真的想要知道结束索引。据推测,你之后对text
的比特实际上更感兴趣?你是在做这样的事吗?
>>> text[wordEndIndex:]
'n photographs'
如果你确实需要索引,那就做你已经完成的事情,但把它包装在一个你可以调用不同的text
和word
的函数中,这样你就不会# 39; t必须重复此代码。如果你给函数一个描述性的名字,那么它很简单易懂。
另一方面,如果您对text
的某些内容更感兴趣,那么请不要理解索引是什么:
>>> text.split(word)
['fed up of seeing perfect ', ' photographs']
当然,如果单词在文本中出现不止一次,这将变得更加复杂。在这种情况下,你可以定义一个不同的函数来分割第一次出现的单词,然后只返回前后组件,而不返回任何数字索引。
答案 2 :(得分:1)
只是为了好玩,这是一个第一原则版本,它在一次传递中找到单词最后一个字符的索引:
def word_end_index(text, word):
wi = wl = len(word)
for ti, tc in enumerate(text):
wi = wi - 1 if tc == word[-wi] else wl
if not wi:
return ti
return -1
我有一些较短的版本,但是他们使用了切片,这些切片会在整个地方复制字符串,效率很低。