Python:为什么我可以在一行代码中打印一个Unicode字符,但是当我稍后尝试打印时,相同的Unicode字符会导致错误?

2024-04-28 07:14:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用BeautifulSoup4编写一个Python程序,当我获取一个包含样式化引号u'\u2019'的HTML元素时,我能够像这样打印出整个元素:

代码:

print "Using song: %s" % (song_link)

结果:

Using song: <a href="http://www.songlyrics.com/anna-kendrick/cups-pitch-perfects-when-im-gone-lyrics/" title="Cups (Pitch Perfect’s “When I’m Gone”) Lyrics Anna Kendrick">Cups (Pitch Perfect’s “When I’m Gone”)</a>


但是当我试图打印出该元素的文本时,它失败了:

代码:

print "Song text: %s" % (song_link.text)

结果:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 30: ordinal not in range(128)


为什么会这样?为什么这一刻起作用,下一刻却不起作用?它是可复制的。你知道吗


Tags: 代码textin元素songlinkwhenusing
1条回答
网友
1楼 · 发布于 2024-04-28 07:14:23

第一个case的输出是一个字节字符串。第二个case的输出是一个Unicode字符串。Unicode字符串被隐式编码为终端编码,或者ascii如果无法确定终端编码,则会导致错误。你知道吗

在不了解您的环境的情况下,您需要确定为什么打印Unicode字符串默认为在ascii中编码,或者自己使用.encode('utf8')显式编码字符串。你知道吗

相关问题 更多 >