【问题标题】:Why does Beautiful Soup 4 with Python 3 print unicode but doesn't for Python 2?为什么 Python 3 的 Beautiful Soup 4 打印 unicode 但 Python 2 不打印?
【发布时间】:2015-08-15 18:23:29
【问题描述】:

我一直在尝试用漂亮的汤 4 在 python 3.4 上制作一个引号和 reddit 机器人。我从 goodreads 中抓取引号的代码如下: http://pastebin.com/1EZHPmym 问题是它会在引号和作者姓名之间打印出诸如“\xe2\x80\x9c”之类的内容序列。 我是一个完全的编程初学者,我已经尝试过研究这个问题,它作为编码问题出现了。所以我继续查看goodreads报价源页面上的字符集。然后我查看了源页面以找到包含我想要的文本的确切 div,我看到了:

“不要因为结束而哭泣,要因为发生而微笑。”
Dr. Seuss

它显示了一些奇怪的字符,例如“―”、“&ldquo”等。我目前正在研究一种蛮力方法来查找所有奇怪的字符并从结果中简单地消除它们。但是我看了这个视频:BeautifulSoup Tutorial,他似乎没有遇到和我一样的东西,这是有道理的,因为洛杉矶咖啡店黄页的源代码没有相同的怪异字符。

为 python 2.7 调整的相同代码在我没有 print 函数的括号的情况下产生没有 unicode 的文本。有什么原因吗?

请注意,我目前的解决方案是使用 python 的 .replace for Python 3 来消除 unicode,但有更好的解决方案吗?

请注意,Beautiful Soup and Unicode Problems 很好地解释了正在发生的事情,但我不明白为什么在 python 2.7 中不会出现此问题

【问题讨论】:

  • 请编辑您的问题以包含来自 pastebin 链接的代码
  • 那是因为在 Python 3 中,strings have changed.

标签: python python-2.7 python-3.x unicode


【解决方案1】:

使用

b'\xe2\x80\x9c'.decode()

返回双引号

'“'

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2015-09-04
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2015-12-26
    相关资源
    最近更新 更多