首页 > 解决方案 > 检查字符串中是否包含变量str+int+int的序列

问题描述

Python 菜鸟在这里。我有以下问题,有一个字符串包含这样的系列剧集:"whatever S01E02 sowhat" 其中系列(01)可以假设任何值(01 到 99),剧集(02)也可以(01 到 99).. 我想在字符串中找到它。我想使用一种聪明的方法,比如 if string contains a sequence of str(S)+int+int+str(E)+int+intthen... 但我所做的只是一个包含所有可能系列(代码中的 ij )和剧集(代码中的 kl )的列表,并循环创建一个列表...

如果一个字符串包含一个序列,有人知道如何进行此验证alphabetic+int+int+alphabetic+int+int吗?

我发现以下帖子 Python 是否有字符串“包含”子字符串方法? 找到子字符串,但我无法适应我想要的东西。

我想以"S"+int+int+"E"+int+int一种巧妙的方式搜索一个子字符串 (),其中这些整数可能具有任何整数值。

下面是我实现的代码:

series_episode = "Series whatever S01E04 formating no-one-cares"
list_SijEkl = []
i,j,k,l=0,1,0,1
while i < 2:
    while j < 10:
        k,l=0,1
        while k<3:
            while l<10:

list_SijEkl.append("S"+str(i)+str(j)+'E'+str(k)+str(l))

                l+=1
            l=0
            k+=1
        j+=1
    i+=1

#print(list_SijEkl)

for episode in list_SijEkl:
    if episode in series_episode:
        cut = series_episode.split(episode)
        before = cut[0]
        after = cut[1]
        print('cut before '+ before)
        print('cut after'+ after)
        print (before + episode)
        print ('what i want in the end: '+before + episode)

标签: pythonsubstring

解决方案


您可以为此使用正则表达式。以下将查找字符串中的所有匹配项:

import re 

s = "Series whatever S01E04 formating no-one-cares"
re.findall('.+(S[0-9]{2}E[0-9]{2}).+', s)

更多关于正则表达式的信息可以在这里找到:https ://docs.python.org/3/howto/regex.html


推荐阅读