Python декодировать текст в ASCII - PullRequest
       23

Python декодировать текст в ASCII

0 голосов
/ 23 сентября 2011

Как декодировать строку в юникоде так:

, что% 2527s% 2bthe% 2btime% 252c% 2bnow% 253f

в ASCII, как это:

что + время + + Теперь

Ответы [ 3 ]

6 голосов
/ 23 сентября 2011

в вашем случае строка была декодирована дважды, поэтому нам нужно дважды заключить в кавычки, чтобы получить ее обратно

In [1]: import urllib
In [2]: urllib.unquote(urllib.unquote("what%2527s%2bthe%2btime%252c%2bnow%253f") )
Out[3]: "what's+the+time,+now?"
0 голосов
/ 23 сентября 2011

Вы можете преобразовать экранированные символы% (hex) примерно так:

import re

def my_decode(s):
    re.sub('%([0-9a-fA-F]{2,4})', lambda x: unichr(int(x.group(1), 16)), s)

s = u'what%2527s%2bthe%2btime%252c%2bnow%253f'
print my_decode(s)

приводит к строке Unicode

u'what\u2527s+the+time\u252c+now\u253f'

Не уверен, как вы узнаете, как преобразовать \ u2527 в одиночную кавычку или отбросить символы \ u253f и \ u252c при преобразовании в ascii

0 голосов
/ 23 сентября 2011

Как-то так?

title = u"what%2527s%2bthe%2btime%252c%2bnow%253f"
print title.encode('ascii','ignore')

Также взгляните на это

...