Python 3.5中如何验证指定索引处是否存在子串FooBar
检查指定索引位置是否以目标子串开头
嘿,这个需求其实很好解决,Python里有几种简单又靠谱的方法能搞定它。咱们直接看解决方案:
方法一:切片对比法
这种方法思路很直观:先计算目标子串的长度,然后从给定索引处截取相同长度的子串,再和目标子串做对比。同时要先判断边界情况,避免索引越界。
代码示例
# 定义原始字符串和目标子串 original_str = "rsFooBargrdshtrshFooBargreshyershytreBarFootrhj" target_sub = "FooBar" def check_sub_at_index(s, target, start_idx): target_length = len(target) # 先判断起始索引是否合法,避免截取时越界 if start_idx + target_length > len(s): return False # 截取对应长度的子串并对比 return s[start_idx:start_idx+target_length] == target # 测试你的案例 print(check_sub_at_index(original_str, target_sub, 17)) # 输出: True print(check_sub_at_index(original_str, target_sub, 13)) # 输出: False
方法二:使用内置的startswith方法(推荐)
Python字符串自带的startswith方法其实支持指定起始位置参数,完全匹配咱们的需求,而且代码更简洁,还自动处理了边界情况,不需要额外判断。
代码示例
original_str = "rsFooBargrdshtrshFooBargreshyershytreBarFootrhj" target_sub = "FooBar" # 直接调用startswith,第二个参数指定起始索引 print(original_str.startswith(target_sub, 17)) # 输出: True print(original_str.startswith(target_sub, 13)) # 输出: False
为什么推荐这个方法?
- 代码更简洁,可读性更强
- 底层是Python优化过的实现,效率更高
- 自动处理了边界情况:如果起始索引超出字符串长度,或者起始索引+子串长度超出字符串长度,都会直接返回
False,不会抛出索引错误
边界情况测试
比如传入一个超出范围的索引,两种方法都会安全返回False:
print(check_sub_at_index(original_str, target_sub, 100)) # 输出: False print(original_str.startswith(target_sub, 100)) # 输出: False
内容的提问来源于stack exchange,提问作者user7450368
相关产品推荐
相关产品推荐

