Python实现输入无大小写区分匹配(不使用lower/upper方法)
解决不使用
lower()/upper()实现大小写不敏感匹配的问题 嘿,这个需求挺有意思的!既然不想用lower()或者upper()来统一大小写,那咱们可以试试这两个实用的方法:
方法一:正则表达式(简洁通用)
利用Python的re模块,通过re.IGNORECASE标志来实现不区分大小写的完全匹配,代码示例如下:
import re answer = input("What's your name?") if re.fullmatch(r'mike', answer, flags=re.IGNORECASE): # 这里写匹配Mike任意大小写时的逻辑 print("Welcome back, Mike!") elif re.fullmatch(r'john', answer, flags=re.IGNORECASE): # 这里写匹配John任意大小写时的逻辑 print("Hey John, nice to see you!") else: # 其他输入的处理逻辑 print("Hello there, stranger!")
re.fullmatch会确保输入的整个字符串和目标模式完全匹配,加上re.IGNORECASE后,不管输入是MIKE、mIke还是Mike,都会被正确识别。
方法二:自定义字符匹配函数(适合理解底层逻辑)
如果想手动实现大小写判断,可以通过字符的ASCII码差值来判断(英文字母的大小写ASCII码差为32),写一个自定义函数来逐个字符比对:
def is_case_insensitive_match(input_str, target_name): # 先判断长度是否一致,长度不同直接不匹配 if len(input_str) != len(target_name): return False # 逐个字符比对 for input_char, target_char in zip(input_str, target_name): # 要么字符完全相同,要么是同一字母的大小写(ASCII差32) if input_char != target_char and abs(ord(input_char) - ord(target_char)) != 32: return False return True answer = input("What's your name?") if is_case_insensitive_match(answer, "Mike"): print("Welcome back, Mike!") elif is_case_insensitive_match(answer, "John"): print("Hey John, nice to see you!") else: print("Hello there, stranger!")
这个方法只针对英文字母有效,要是需要处理带重音的特殊字符就不太适用了,但应付Mike、John这类普通英文名字完全没问题。
两种方法里更推荐正则表达式的方案,代码简洁还能适配更多场景~
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

