如何在unthon中将带有unicode的字符串转换为普通文本

时间:2016-04-11 17:16:57

标签: python html url unicode

我有文字

-DrandomProperty=randomVal

我需要将它转换为普通的url,就像字符串一样。

s = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl\u003dyes\u0026id\u003d2f4d1d2005872ce2\u0026itag\u003d22\u0026source\u003dwebdrive\u0026app\u003dtexmex\u0026"

我试过s.decode(' utf-8')不起作用。 任何帮助非常感谢。 谢谢

4 个答案:

答案 0 :(得分:0)

在python 3中,它们都是相同

s = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl\u003dyes\u0026id\u003d2f4d1d2005872ce2\u0026itag\u003d22\u0026source\u003dwebdrive\u0026app\u003dtexmex\u0026"

string_I_want_instead = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl=yes&id=2f4d1d2005872ce2&itag=22&source=webdrive&app=texmex&"

assert s == string_I_want_instead

如果您使用的是python 2,则需要将它们作为unicode字符串才能使字符正常工作,但仍然可以添加u"..."前缀,它们仍然是相同的。

s = u"https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl\u003dyes\u0026id\u003d2f4d1d2005872ce2\u0026itag\u003d22\u0026source\u003dwebdrive\u0026app\u003dtexmex\u0026"

string_I_want_instead = u"https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl=yes&id=2f4d1d2005872ce2&itag=22&source=webdrive&app=texmex&"

assert s == string_I_want_instead

答案 1 :(得分:0)

Python 3

url = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl\u003dyes\u0026id\u003d2f4d1d2005872ce2\u0026itag\u003d22\u0026source\u003dwebdrive\u0026app\u003dtexmex\u0026"  
final_url = url.encode('utf-8').decode()
if url == final_url:
    print("Both Are Equal")

输出:

Both Are Equal

@ TadhgMcDonald-Jensen指出它们是相同的,你可以使用你的初始字符串,输出将自动编码为utf-8。

答案 2 :(得分:0)

试试这个:

s1= urllib.unquote(s).encode('latin1').decode('unicode_escape')

答案 3 :(得分:0)

在Python 3中,这些字符串是相同的,因此您必须使用Python 2.您可以使用unicode_escape编解码器将s转换为Unicode字符串,然后将其编码回字节字符串使用适当的编解码器。 ascii在这种情况下运行正常:

#!python2
s = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl\u003dyes\u0026id\u003d2f4d1d2005872ce2\u0026itag\u003d22\u0026source\u003dwebdrive\u0026app\u003dtexmex\u0026"
t = "https://r3---sn-tt17dnel.c.docs.google.com/videoplayback?requiressl=yes&id=2f4d1d2005872ce2&itag=22&source=webdrive&app=texmex&"
print s == t
print s.decode('unicode-escape').encode('ascii') == t

输出:

False
True