Python中切片字符串与目标字符串用==比较结果异常的技术咨询
问题解答:为什么
"Hey guys"[:4] == "Hey"返回False? 嘿,我来帮你搞明白这个容易踩的小坑!你肉眼看到的打印结果其实骗了你——"Hey guys"[:4]和"Hey"根本不是一回事儿。
问题根源:被忽略的空格
咱们仔细数一下"Hey guys"的前4个字符:
- 索引0:
H - 索引1:
e - 索引2:
y - 索引3: 空格(就是
Hey后面跟的那个空格)
所以"Hey guys"[:4]的实际值是"Hey "(末尾带着一个空格),而不是你以为的"Hey"!
为什么打印看起来一样?
空格在普通打印输出里非常不显眼,肉眼很难分辨。你可以用repr()函数来查看字符串的“真面目”,它会把所有隐形字符都显式展示出来:
print(repr("Hey guys"[:4])) # 输出: 'Hey ' print(repr("Hey")) # 输出: 'Hey'
这下就能清楚看到区别了,一个末尾有空格,一个没有,==是严格比较,自然返回False。
怎么解决?
如果你的目标是截取"Hey",只需要取前3个字符就好:
print("Hey guys"[:3] == "Hey") # 输出: True
内容的提问来源于stack exchange,提问作者Benny C.
相关产品推荐
相关产品推荐

