首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用索引检查Python中两个单词是否重叠的简单方法是什么?

使用索引检查Python中两个单词是否重叠的简单方法是什么?
EN

Stack Overflow用户
提问于 2015-11-06 20:59:33
回答 4查看 3.8K关注 0票数 1

我试图通过使用两个单词的索引(起始位置和结束位置)而不是单词来确定两个单词是否在字符串中重叠。

例如:

代码语言:javascript
运行
复制
str = "testme"
start_word_1 = 0
end_word_1 = 4
start_word_2 = 4
end_word_2 = 6

在这个示例中,str0:4是"test“,而str4:6是"me”。这些都不重叠,但是单词1的结尾和单词2的开头是一样的,所以这些都没问题。我只是觉得我把它弄得太复杂了,还有更简单的代码来涵盖完全重叠的单词和只部分重叠的单词。谢谢!

为了澄清重叠:我的意思是在字符串切片中,str、0:4和str4:6不重叠。他们都没事。

但str0:5确实与str4:6重叠。

另外,str0:6确实与str1:4重叠,这里的"est“完全位于”testme“的内部。

这将用于文本突出显示,我不希望任何东西是冲突的突出显示。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-06 21:31:21

我认为这样的事情很简单,并且满足了你(诚然有点奇怪)的要求。注意,这是使用类似于切片的字符串,与索引的使用相对应,而不是使用单词本身:

代码语言:javascript
运行
复制
In [1]: def words_overlap(slice1, slice2):
   ...:     """Take two strings representing slices (e.g. 'x:y') and
   ...:     return a boolean indicating whether they overlap"""
   ...:     if slice1[0] < slice2[0]:  # slice1 is leftmost
   ...:         return slice2[0] < slice1[2]  # slice2 ends before slice1 starts
   ...:     else:
   ...:         return slice1[0] < slice2[2]
   ...: 

In [2]: words_overlap('1:3', '2:4')
Out[2]: True

In [3]: words_overlap('2:4', '1:3')
Out[3]: True

In [4]: words_overlap('2:3', '5:7')
Out[4]: False

In [5]: words_overlap('0:4', '4:6')
Out[5]: False

它所做的就是使用一个简单的小于测试的方法来检测哪个切片是最左边的,然后告诉您最右边的切片是否在最左边的一个结束之前启动。

应该是相当有效的,因为它只涉及两个整数比较。

票数 2
EN

Stack Overflow用户

发布于 2015-11-06 21:08:59

也许是那样?

代码语言:javascript
运行
复制
start1 < end2 and start2 < end1

这意味着:这两个单词的开头早于另一个单词的结尾,因此它们是重叠的。

票数 2
EN

Stack Overflow用户

发布于 2015-11-06 21:18:09

Case 1:Word 2是单词1的子字符串(或匹配)(反之亦然)

代码语言:javascript
运行
复制
word1 in word2 or word2 in word1

例如。"StackExchange“和"tack”

案例2:Word 2在单词1的末尾重叠

for i in range(1, len(word2)): word1.endswith(word2[:-i])

例如。“堆叠溢出”与“流动”

案例3:Word 2在单词1的开头重叠

for i in range(1, len(word2)): word1.startswith(word2[i:])

例如。“徽章”和“非常糟糕”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33575620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档