Python noob在这里。
我遇到以下问题,其中有一个字符串,其中包含类似这样的一系列剧集:"whatever S01E02 sowhat"
其中系列(01)可以假定任何值(01到99),情节(02)也可以(01到99)..我想在字符串中找到它。
我想用一个聪明的办法
如果字符串包含str(S)+int+int+str(E)+int+int
的序列,则...
但是我要做的只是一个包含所有可能的系列(代码中的ij)和情节(代码中的kl)的列表,然后循环创建一个列表...
如果字符串包含序列alphabetic+int+int+alphabetic+int+int
,有人知道如何进行验证吗?
我发现了以下帖子 Does Python have a string 'contains' substring method? 查找子字符串,但我无法适应想要的东西。
我想搜索一个子字符串("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)
答案 0 :(得分:5)
您可以为此使用正则表达式。以下将在字符串中找到所有出现的内容:
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
答案 1 :(得分:0)
在这种情况下,您可以使用try-except方法。您检查该行中的每个单词,然后:
if len(word)==6:
if word[0]=='S' and word[3]=='E':
try:
a=int(word[1:3])
b=int(word[3:])
print(word,' found')
except:
pass