0

エンコードされたURLを持っています

http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5

にとって

http://blahblah.com/start/DEE-G6F-W4A-2N15

これはどのようなエンコーディングで、Pythonで変換するにはどうすればよいですか?

4

1 に答える 1

3

編集: (@interjay との会話により):

%E2%80%8Bを表しますZERO WIDTH SPACE。それらはおそらくそこにあるべきではありません。あなたはそれらを削除することができますstr.replace:

In [135]: 'http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5'.replace('%E2%80%8B', '')
Out[135]: 'http://blahblah.com/start/DEE-G6F-W4A-2N15'

一般に、引用された URL はurllib.unquoteを使用して引用を解除できます。

In [6]: import urllib

In [7]: print(urllib.unquote('http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5'))
http://blahblah.com/s​tart/DEE-G​6F-W4A-2N1​5

%E2%80%8Bが a を表していることを確認する方法は次のZERO WIDTH SPACEとおりです。

In [18]: x = urllib.unquote('%E2%80%8B')

In [19]: y = x.decode('utf-8')

In [20]: import unicodedata as UD

In [21]: [UD.name(c) for c in y]
Out[21]: ['ZERO WIDTH SPACE']

引用されていない URL には ZERO WIDTH SPACE が含まれていることに注意してください。

In [4]: urllib.unquote('http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5')
Out[4]: 'http://blahblah.com/s\xe2\x80\x8btart/DEE-G\xe2\x80\x8b6F-W4A-2N1\xe2\x80\x8b5'

URLを入れるのは変なようです...

于 2013-03-18T12:48:51.657 に答える