使用HTMLParser获取准确的符号

时间:2012-05-31 03:08:19

标签: python html-parser

HTMLParser.unescape表现得像这样:

>>> import HTMLParser
>>> h= HTMLParser.HTMLParser()
>>> h.unescape('alpha < β')
u'alpha < \u03b2'

如何获取确切的beta符号而不是\u03b2

由于

1 个答案:

答案 0 :(得分:2)

\u03b2 “确切的beta符号”。

你必须学会​​区分事物和事物的表现。

您的字符串由小写字母a,小写字母l,小写字母p,小写字母h,小写字母a,空格,左尖括号,空格和beta组成。

u'...'序列是字符串的表示。它会向您显示一个可能的字符序列,您可以键入Python源文件以表达该字符串的概念。 u'foo'是字符串foou'\x66\x6f\x6f'也是如此。 u'\u0066\u006f\u006f'也是如此。当你要求Python显示其中任何一个的表示时,它将显示u'foo',因为这是Python认为该字符串最简单的表示。

当您打印 u'\u0066\u006f\u006f'时,您会看到foo,没有u前缀且没有引号 - 因为现在您要求文本表示,而不是源代码表示。您可以对计划中的字符串执行相同的操作:print h.unescape('alpha &lt; &beta;')如果您的终端目前能够显示β,您应该会看到alpha < β 。如果没有,您通常会得到一个UnicodeEncodeError,因为Python会尝试将字符串的 byte 表示发送到您的终端(使用某种字符串编码将字符转换为字节),并且编码不是为处理β而设计的。对于 问题,请参阅Python, Unicode, and the Windows console