Python使用re.compile后无法正常打印中文字符的问题求助
解决BeautifulSoup筛选后打印中文显示Unicode转义的问题
这个问题其实是Python对象不同打印逻辑导致的:
- 当你打印整个
table对象时,BeautifulSoup的Tag类会调用__str__方法,它会输出经过编码处理的可读性HTML文本,所以中文能正常显示。 - 而打印
rows列表时,Python会调用每个Tag对象的__repr__方法——这个方法的设计初衷是输出可被Python解析的字符串表示,所以会把非ASCII字符转成Unicode转义序列(比如\u6dfb\u52a0\u7f6e\u9876),方便调试时看准确编码,而非美观的可读性显示。
解决办法
你只需要主动触发Tag对象的字符串转换逻辑,或者遍历列表逐个打印元素即可:
方法1:遍历列表,逐个打印每个标签
for row in rows: print(row)
方法2:用prettify()格式化输出(带缩进,更易读)
for row in rows: print(row.prettify())
方法3:将列表元素转为字符串后批量打印
print([str(row) for row in rows])
效果验证
用上述任意方法打印后,title属性的值会正常显示为"添加置顶",不再是Unicode转义字符。
内容的提问来源于stack exchange,提问作者Mary
相关产品推荐
相关产品推荐

