我有这段代码从gunzip流中读取并检查每行是否包含某些模式。我拥有的是
if (pattern in line):
do_something()
有些行包含非ASCII字符,当我的代码到达那些行时,我得到一个UnicodeDecodeError。但是,我无法在手动测试中重现此错误。当我复制导致UnicodeDecodeError的行的repr并将其分配给变量line
并执行pattern in line
时,我得到False
而不是错误。我对这种不一致感到困惑。为什么同一个字符串的行为不同?
答案 0 :(得分:1)
我找到了问题的根本原因。不知何故,我的实际代码pattern
的类型为unicode
,而不是str
,但在手动测试中,我pattern
只是我输入的str
。导致我观察到的不同行为。