如何更高效地检测字符串中多个指定位置的字符是否为字母
解决方案
你可以先把所有需要校验的目标字符片段提取出来拼接为一个新字符串,再对这个新字符串调用一次isalpha()完成整体校验,完全不用拼接冗长的多条件判断。
适配固定规律场景(每6位前3位为字母)
你的示例字符串遵循「每6个字符中前3位是字母、后3位是数字」的规律,可以直接按步长遍历提取:
raw_str = "aaa111bbb222ccc333ddd444eee555fff666" # 按步长6遍历,每次取前3位拼接后统一校验 is_all_alpha = ''.join([raw_str[i:i+3] for i in range(0, len(raw_str), 6)]).isalpha()
适配任意指定位置场景
如果需要校验的区间不遵循固定规律,可以手动定义要校验的切片范围,再统一拼接校验:
raw_str = "aaa111bbb222ccc333ddd444eee555fff666" # 自定义所有需要校验的起止位置 check_ranges = [(0,3), (6,9), (12,15), (18,21), (24,27), (30,33)] is_all_alpha = ''.join([raw_str[s:e] for s,e in check_ranges]).isalpha()
实现逻辑说明
把所有需要验证为字母的片段全部拼接为一个完整字符串,只要这个完整字符串的所有字符都是字母,就说明所有目标位置都符合要求,全程仅调用一次isalpha()即可完成全部校验。
内容的提问来源于stack exchange,提问作者Tommaso
相关产品推荐
相关产品推荐

