Python如何判断列表中是否存在完全匹配的字符串?
问题原因
你当前代码的错误点是将sys.argv[2:]这个列表整体转为了字符串,此时in操作符判断的是子字符串是否存在,而非列表元素的完全匹配:你原来代码里的fruitlist实际是"['APPLE', 'PEAR', 'STRAWBERRY']"这类字符串,STRAW作为子串存在于该字符串中,所以会误判为匹配成功。
修复方案
不要把整个列表转字符串,而是对列表内的每个元素单独做大写转换,再判断目标字符串是否存在于处理后的列表中即可。
修改后代码如下:
import sys # 目标字符串统一转大写后再匹配 target = sys.argv[1].strip().upper() # 遍历列表每个元素转大写,保留列表结构 fruit_list = [item.upper() for item in sys.argv[2:]] print(sys.argv[1]) print(fruit_list) if target in fruit_list: print(sys.argv[1], 'exact match found in list')
效果验证
用你原来的执行命令测试:
$ python3 a.py STRAW apple pear strawberry STRAW ['APPLE', 'PEAR', 'STRAWBERRY']
此时不会输出匹配成功的提示,只有传入完全匹配的参数比如STRAWBERRY时才会触发匹配成功逻辑。
内容的提问来源于stack exchange,提问作者chiwal
相关产品推荐
相关产品推荐

