如果子字符串位于另一个子字符串之前,则忽略该子字符串

2024-09-29 00:11:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,正在寻找两个子字符串,希望显示这两个子字符串之间的内容。但是我想在子串2之前找到子串1。在找到子字符串1之前,如何忽略子字符串2?我遇到的问题是,如果subString2位于substring1之前,它将返回一个空列表

def findMiddle(mainString, subString1, subString2):
 
    newString = []
    startPos = mainString.find(subString1)
    endPos = mainString.find(subString2)
        
    for i in range(startPos, endPos):
            newString.append(i)
            
    return newString

Tags: 字符串内容列表fordeffind子串newstring
3条回答
def middle(line: str, word1: str, word2: str) -> str:
    i = line.find(word1)
    if i >= 0:
        j = line.find(word2, i + len(word1))
        if j > i:
            return line[i + len(word1):j].strip()
    return None

print(middle("a b c", "a", "c"))
print(middle("c b a", "a", "c"))

b

None

不要在整个字符串中搜索结束位置,只搜索开始位置后的字符串片段

startPos = mainString.find(subString1)
endPos = startPos+mainString[startPos:].find(subString2)

下面是完整的代码,可以帮助您了解哪里出了问题。我把返回函数留给你去解密。你很容易弄明白。如果你觉得困难,请告诉我

搜索字符串时,索引很重要。此外,您还需要检查在未找到第一个字符串但找到第二个字符串时的条件。记住,如果找不到字符串,find方法将返回-1。在检查下一个字符串之前,需要先检查该字符串

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thanks'
subString2 = 'is'
def findMiddle(mainString, subString1, subString2):
    x = mainString.find(subString1)
    if x < 0:
        print (subString1, 'does not exist in', mainString)
        return
    ln = len(subString1)
    y = mainString.find(subString2,x+ln)
    if y < 0: 
        print (subString2, 'does not exist in', mainString, 'after', subString1)

    elif y == x+ln:
        #find result will always be pos of string 
        #irrespective of where you start from. 
        #So you need to check if pos is after previous find

        print ('No strings exist in', mainString, 'between', subString1, 'and', subString2)

    else:
        print ('The middle string between',subString1,'and',subString2, ':',mainString[x+ln:y])


findMiddle(mainString, subString1, subString2)

程序的输出如下所示:

例1:

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thanks'
subString2 = 'is'

输出:

The middle string between Thanks and is : giving to everyone th

例2:

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thaxks'
subString2 = 'is'

输出:

Thaxks does not exist in Happy Thanksgiving to everyone this morning

例3:

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thanks'
subString2 = 'ix'

输出:

ix does not exist in Happy Thanksgiving to everyone this morning after Thanks

例4:

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thanks'
subString2 = 'Happy'

输出:

Happy does not exist in Happy Thanksgiving to everyone this morning after Thanks

例5:

mainString = 'Happy Thanksgiving to everyone this morning'
subString1 = 'Thanks'
subString2 = 'giv'

输出:

No strings exist in Happy Thanksgiving to everyone this morning between Thanks and giv

相关问题 更多 >