我试图找出一个子字符串(“xyz”)是否在字符串中,如果是,如果它有“。”。在其左侧的索引中。如果子字符串在它之前有一段时间,那么它不会被计数,并且如果子字符串在没有周期的情况下出现,它将返回true。查找是否字符先于子字符串
我开始检查子字符串是否在字符串中,并附加子字符串的索引,如果它出现。然后我遍历该列表并检查index-1是否为“。”,如果是,则删除索引。如果列表中仍然有任何内容,我会返回True,因为条件会被满足。
我不能导入任何模块,因为这是一个竞争的一部分,所以没有正则表达式。
这是我到目前为止有:
def xyz_there(a_str):
#Finds all indexes that xyz starts at
indexes=[i for i in range(len(a_str)) if a_str.startswith("xyz", i)]
#Check if sub not in string or string too short
if len(a_str)<3 or "xyz" not in a_str:
return False
#Iterate through indexes, check for preceding "."
for i in indexes:
if a_str[i-1] == ".":
indexes.remove(i)
if len(indexes)>0:
return True
else:
return False
它运作良好,在大多数情况下,但它使用这个测试有一些问题:
xyz_there('1.xyz.xyz2.xyz') #Should return False
鉴于串3分的情况下,它会在第一个和第三个实例中找到这个时间段,但不是第二个时间段,我不明白为什么它会跳过那个。
正则表达式是一个内置功能 – tinySandy