Python 3.10+如何实现不区分大小写的字符串匹配?
解决Python match-case不匹配任意大小写指令的问题
要让match-case语句匹配任意大小写的指令(比如add、Add、ADD),最健壮的方案是将用户输入统一转换为小写(或大写)后再进行匹配,具体实现如下:
核心思路
在对用户输入做空格清理后,调用lower()方法将输入转为全小写,后续match语句仅用小写指令作为匹配条件,就能覆盖所有大小写组合的输入场景。
修改后的完整代码
todos = [] while True: user = input('Enter add, show, edit, complete or exit to finish. : ') user = user.strip().lower() # 先去除首尾空格,再统一转为全小写 match user: case 'add': todo = input('Add an item: ') todos.append(todo) case 'show' | 'display': list_length = len(todos) for i, item in enumerate(todos): item = item.title() # 首字母大写格式化输出待办项 print(f'{i + 1}-{item}\n') # 处理单复数语法 print(f'You have {list_length} item{"s" if list_length != 1 else ""} in your to do list.\n') case 'exit': break case _: print("Invalid command, please try again.")
方案优势
- 无需枚举所有大小写组合(比如
case 'add' | 'Add' | 'ADD'),代码更简洁易维护 - 覆盖所有大小写混合的输入场景,比如
aDd、AdD都能正确匹配 - 你之前尝试的
capitalize()无效,是因为它仅将首字母转为大写、其余小写,无法覆盖全大写等场景(比如ADD转后是Add,依然不匹配case 'add')
内容的提问来源于stack exchange,提问作者Weverson Goncalves Muciarone
相关产品推荐
相关产品推荐

