dammit.original_encoding 获取编码方式时得到的是 None ?

BS4文档中提到,编码自动检测 功能可以在Beautiful Soup以外使用,检测某段未知编码时,可以使用这个方法:

from bs4 import UnicodeDammit

dammit = UnicodeDammit("Sacr\xe9 bleu!", ["latin-1", "iso-8859-1"])
print(dammit.unicode_markup)
# Sacré bleu!
print(dammit.original_encoding)
# 'latin-1'

在实际操作中,发现 dammit.original_encoding 这个变量没有获取到值,打印出来显示为None,cmd中直接执行显示为空白,并没有文中提到的# 'latin-1'编码方式

阅读 4.2k
1 个回答

这是python版本不同导致的,源码的python 2版本中(isinstance(markup, unicode)):

# Short-circuit if the data is in Unicode to begin with.
if isinstance(markup, unicode) or markup == '':
    self.markup = markup
    self.unicode_markup = unicode(markup)
    self.original_encoding = None
    return

源码的python 3版本中(isinstance(markup, str)):

# Short-circuit if the data is in Unicode to begin with.
if isinstance(markup, str) or markup == '':
    self.markup = markup
    self.unicode_markup = str(markup)
    self.original_encoding = None
    return

因为你是Python 3 所以返回None

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题