在字符串中搜索时,Python何时引发UnicodeDecodeError

时间:2016-06-09 19:05:18

标签: python

我有这段代码从gunzip流中读取并检查每行是否包含某些模式。我拥有的是

if (pattern in line):
    do_something()

有些行包含非ASCII字符,当我的代码到达那些行时,我得到一个UnicodeDecodeError。但是,我无法在手动测试中重现此错误。当我复制导致UnicodeDecodeError的行的repr并将其分配给变量line并执行pattern in line时,我得到False而不是错误。我对这种不一致感到困惑。为什么同一个字符串的行为不同?

1 个答案:

答案 0 :(得分:1)

我找到了问题的根本原因。不知何故,我的实际代码pattern的类型为unicode,而不是str,但在手动测试中,我pattern只是我输入的str。导致我观察到的不同行为。