我在macOS上,我使用Python 3.6和Sublime Text 3.当我运行我的脚本时,我得到了标题中的错误。我已经尝试了我能在网上找到的所有东西来解决这个问题,但我仍然有同样的问题而且不知道要解决它。这是我的剧本:
import requests
import subprocess
import time
from bs4 import BeautifulSoup
response = requests.get("https://news.ycombinator.com")
soup = BeautifulSoup(response.content, "html.parser")
for story in soup.find_all(class_="storylink"):
title = story.get_text()
print(title + "\n")
完整的堆栈跟踪是:
The Land of Lisp
Traceback (most recent call last):
File "/Users/dave/Programming/Python/ReadHackerNews/read_hackernews.py", line 12, in <module>
Lost Laughs in Leisure Suit Larry
print(title + "\n")
UnicodeEncodeError: 'ascii' codec can't encode character '\u2013' in position 23: ordinal not in range(128)
[Finished in 1.2s]
问题在于title
变量,是的,我知道它包含一些unicode字符,python不知道如何打印(因为它使用ASCII ???)。
我工作的是,以13\xc2\xa0comments
的形式打印unicode字符。但是我想把它打印成unicode角色......
如果你运行脚本,你必须要有一些&#34;运气&#34;因为并非hackernews上的每个标题都包含一个unicode字符。此外,say
命令仅出现在macOS上 - 如果您在另一个操作系统上进行测试,请将其删除。
编辑:为了好玩,我试图在终端中执行脚本,在那里我没有收到错误!所以这与崇高的文本3 ...
有关 EDIT2:如果我添加sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())