使用Bottle for Python解码HTML实体

时间:2013-06-19 09:49:43

标签: python html bottle

所以基本上我正在使用Bottle为Python编写Web应用程序。但是我遇到了一个非常奇怪和令人沮丧的错误:每当我尝试通过代码放置任何HTML代码时,它就会将它们转换为HTML实体。在这里,我更好地让代码解释:

def fillFlist():
    files = os.listdir('Files/FS/')
    tFlist = []
    for item in files:
        tFlist.append('<tr><td>')
        tFlist.append(item)
        tFlist.append('</td><td>')
        tFlist.append('<a href="localhost/delete/' + item + '">Delete</a></td></tr>')
    tempO = ''
    tempI = tempO.join(tFlist)
    print(tempI)
    return tempI

基本上有一个系统会遍历文件并为每个文件创建一个表行,并且还添加了一个删除文件的链接。然后你可以看到加入表来创建一个字符串,然后将这个字符串插入到HTML中以创建一个表,但是我最终得到了这个表:

<tr><td>test.txt</td><td><a href="localhost/delete/hello.txt">Delete</a></td></tr>

在页面上直接和原始。我一直在谷歌搜索试图解决这个问题,但什么也没有产生。一些额外的说明可以帮助您:

Cookie = request.get_cookie('uploaded')
Flist = fillFlist()

return template(loadHTML('index.html'), flist=Flist, cookie=Cookie)

这基本上是什么意思是将表插入到HTML文件中,通过这样做:

{{flist}}

基本上,我把它放在HTML代码中的任何地方,上面的模板需要一个字符串放在其位置,因此无论何时加载页面,该字符串中的任何内容都放在{{varname}的任何地方是的。

祝你好运,谢谢你!

编辑1:

我还发现它根本没有在我的代码中进行转换,所以它在网页上的转换时就被转换了?我不知道,我猜,这就是我在这里的原因。

编辑2:

我解决了这个问题,当我将HTML代码行解析到网页时(使用{{varname}}方法),它将特殊字符转换为实体。因此,经过一整天的键盘操作,尝试不同的方法,我使用一些基本的文件I / O和一些iFrame修复了这个问题。但谢谢你们的回应!很高兴看到stackoverflow能够快速响应!

1 个答案:

答案 0 :(得分:2)

不使用像瓶子这样的外部库,你可以使用标准的python来实现这一点(我认为只要你的目的得到解决,它就会有所作为)

您可以使用标准库中的Html解析器 this page

>>> import HTMLParser
>>> h = HTMLParser.HTMLParser()
>>> print h.unescape('&pound;682m')
£682m
EDIT for Python 3: the HTMLParser module has been renamed to html.parser.

>>> import html.parser
>>> h = html.parser.HTMLParser()
>>> print(h.unescape('&pound;682m'))
£682m