如何使用暴力方法解析HTML JSON字符串,或如何在Python中修复 "<type 'str'> "中的 "\xfc"

2024-09-27 00:18:57 发布

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

我有一个<type 'str'>变量,其中包含一些html。我的问题是,当打印到控制台时,这些特殊字符被编码成这样的"\xfc",而不是{}。在

我已经试过了

html = html.encode('utf-8').decode('string_escape')

但没有成功。有谁能指引我正确的方向吗?在

谢谢!在

更新:

这个问题还没有解决。下面是关于这个问题的更多信息。。。在

我从一个外部源接收到一个json字符串,其中除了一些其他内容外,还包含html。我想用xpath以“强力方法”访问html,因为json结构经常更改。在

所以我想用漂亮的汤。在

为此,我将json字符串传递给json.loads()将它变成一个对象。然后我将json对象类型转换为一个纯字符串,并将其传递给beautiful soup。在

这种方法效果很好,除了像ßüÄÜÜßäÜÜÜÜÜÜßäÜÜÜ。在

解决这个问题的最佳方法是什么?在

这是一些伪代码

^{pr2}$

这是beautiful soup返回的典型结果(参见Haus f\xfcr Belgien

 <div class="sr_color">
          <div style="float:left">
           <a class="sr_color" href="">
            Haus f\xfcr Belgien
           </a>
           :
           <span>
            <span class="sr_num_color">
             5,0
            </span>
            <span style="display:-moz-inline-box;display:inline-block;float:none;vertical-align:-1px" class="star">
             <span style="width:65px">
              &nbsp;
             </span>
            </span>
           </span>
          </div>
         </div>

Tags: 对象方法字符串divjsonstylehtmlclass
2条回答

您确定您的主机支持unicode吗?Python可以很好地处理字符,但是当它被打印出来时,您的终端可能无法正确地解释它。尝试将字符串写入一个文件,并使用支持unicode的编辑器打开它(甚至可以是html文件并在浏览器中打开它)。在

大多数终端仿真器支持多种编码,可以在它们的选项中设置(取决于所讨论的终端仿真器)。在

\xfcülatin1中的表示。在

首先使用您的unicode编码并将其解码为适合您的html控制台:

u = html.decode('latin1')  # u is an unicode string
print u.encode('utf-8')    # u.encode('utf-8') is a bytestring, encoded in utf-8

请注意:

  • decode从bytestrings转换为unicode
  • encode从unicode转换为bytestrings

Bytestrings(python2中的str,python3中的bytes)是用于输入(例如HTML)和输出(例如控制台)的内容。Unicode(python2中的unicode,python3中的str)是您应该在程序中使用的。在

相关问题 更多 >

    热门问题