在执行子字符串匹配时,我收到 UnicodeDecodeError: 'ascii' codec can't Decode byte 0xc3 inposition 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 -*-
最佳答案
我假设您使用的是 python 2。
出现此问题是因为 bhk.text
是 unicode 字符串。
当您进行诸如 bhk.text 中的“Chambre à coucher”之类的比较时,文字字符串(非 unicode 字符串)需要转换为 unicode 字符串。
由于您声明文件采用 utf-8 编码,unicode char à
被编码为字符串 "\xc3\xa0"
。
当 python 尝试使用默认编解码器 (ascii
) 转换 char“0xc3”时,它无法将其映射到 unicode 字符并引发该错误。
解决方案是将非 ASCII 字符的字符串声明为 unicode,例如:
u"Chambre à coucher" in bhk.text
关于python - 文本比较时出现 UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33547909/