文本比较的UnicodeDecodeError

时间:2015-11-05 15:00:45

标签: python

在执行子字符串匹配时,我得到UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 8: ordinal not in range(128)

代码:

for bhk in bed_bath:
            if "Bedroom" in bhk.text or "Chambre à coucher" in bhk.text or "Slaapkamer" in bhk.text:
                bhk_count += 1

我该如何解决?

我在文件的开头包含以下行。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

1 个答案:

答案 0 :(得分:3)

我假设您使用的是python 2。

问题正在发生,因为bhk.text是一个unicode字符串。

当您进行"Chambre à coucher" in bhk.text之类的比较时,文字字符串(非Unicode字符串)需要转换为unicode字符串。

由于您声明文件具有utf-8编码,因此unicode char à被编码为字符串"\xc3\xa0"

当python尝试使用默认编解码器(ascii)转换char“0xc3”时,它无法将其映射到unicode char并抛出该错误。

解决方案是将带有非ascii字符的字符串声明为unicode,如:

u"Chambre à coucher" in bhk.text