在执行子字符串匹配时,我得到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 -*-
答案 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