与空间建立适当的联系

时间:2010-04-24 07:44:21

标签: python

我在Python中有以下代码:

linkHTML = "<a href=\"page?q=%s\">click here</a>" % strLink

问题是当strLink中有空格时,链接显示为

<a href="page?q=with space">click here</a>

我可以使用strLink.replace(“”,“+”)

但我确信还有其他字符会导致错误。我尝试使用

urllib.quote(strLink)

但它似乎没有帮助。

谢谢! 乔尔

2 个答案:

答案 0 :(得分:2)

确保使用urllib.quote_plus(string [,safe])将空格替换为加号。

urllib.quote_plus(string[, safe])
  

与quote()类似,但也替换空格   按引号要求加号   构建a时的HTML表单值   查询字符串以进入URL。加   原始字符串中的符号是   逃脱,除非他们被包括在内   安全。它也没有安全感   默认为'/'。

来自http://docs.python.org/library/urllib.html#urllib.quote_plus

理想情况下,您将使用urllib.urlencode函数并传递一系列键/值对,如{[“q”,“with space”],[“s”,“with space&amp; other”]等等。

答案 1 :(得分:1)

除了quote_plus(*)之外,您还需要对输出到HTML的任何文本进行HTML编码。否则<&符号将被标记,并带来潜在的安全后果。 (好吧,你不会在URL中得到<,但你肯定会得到&,所以只有一个参数名称与HTML实体名称匹配,而你的字符串搞砸了。< / p>

html= '<a href="page?q=%s">click here</a>' % cgi.escape(urllib.quote_plus(q))

*:实际上普通的quote也很好;我不知道什么不适合你,但它是URL编码字符串的一种非常好的方式。它将空格转换为%20,这也是有效的,并且在路径部分也有效。 quote_plus最适合生成查询字符串,但如果有疑问,quote最安全。