【发布时间】:2016-03-02 16:45:17
【问题描述】:
我试图找出一个子字符串(“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 个实例,它会在第一个和第三个实例中找到句点,但不是第二个,我不明白为什么它会跳过那个。
【问题讨论】:
-
正则表达式是内置功能