国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python進行新浪微博的mid和url互相轉換實例(10進制和62進制互

2020-02-23 05:19:24
字體:
來源:轉載
供稿:網(wǎng)友

不過,status中包含了一個mid字段,通過mid,我們實際上是可以通過計算得到url的。

在開始計算之前有必要說明一下,什么是base62編碼。它實際上就是十進制和62位進制的互換。對于62進制,從0數(shù)到9以后,10用小寫字母a表示,接著數(shù)完26個字母,到z為35,然后36為大寫字母A,一直到61為大寫字母Z。所以,我們可以實現(xiàn)十進制數(shù)字base62編碼的encode和decode。下面的代碼實際上來自stackoverflow:

代碼如下:
ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def base62_encode(num, alphabet=ALPHABET):
    """Encode a number in Base X

    `num`: The number to encode
    `alphabet`: The alphabet to use for encoding
    """
    if (num == 0):
        return alphabet[0]
    arr = []
    base = len(alphabet)
    while num:
        rem = num % base
        num = num // base
        arr.append(alphabet[rem])
    arr.reverse()
    return ''.join(arr)

def base62_decode(string, alphabet=ALPHABET):
    """Decode a Base X encoded string into the number

    Arguments:
    - `string`: The encoded string
    - `alphabet`: The alphabet to use for encoding
    """
    base = len(alphabet)
    strlen = len(string)
    num = 0

    idx = 0
    for char in string:
        power = (strlen - (idx + 1))
        num += alphabet.index(char) * (base ** power)
        idx += 1

    return num

下面先說url到mid的轉換。對于一個新浪微博url,它是形如:http://weibo.com/2991905905/z579Hz9Wr,中間的數(shù)字是用戶的uid,重要的是后面的字符串“z579Hz9Wr”。它的計算其實也很簡單,從后向前四個字符一組,就得到:

代碼如下:
z
579H
z9Wr

將每個字符串用base62編碼來decode,就可以得到它們的十進制數(shù)字分別為:
代碼如下:
35
1219149
8379699

將它們拼起來就可以得到mid為:“3512191498379699”。這里要強調的是:對于除了開頭的字符串,如果得到的十進制數(shù)字不足7位,需要在前面補足0。比如得到的十進制數(shù)分別為:35,33040,8906190,則需要在33040前面添上兩個0。
代碼如下:
代碼如下:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 上林县| 怀化市| 渑池县| 常德市| 涪陵区| 平武县| 靖西县| 泰宁县| 曲松县| 卢湾区| 浮山县| 长子县| 香河县| 泰安市| 溧阳市| 江城| 西昌市| 江西省| 文水县| 浙江省| 白城市| 青海省| 凤城市| 宜都市| 安塞县| 四子王旗| 广德县| 浦县| 封丘县| 电白县| 泸州市| 德清县| 碌曲县| 子长县| 柳林县| 乐平市| 柳河县| 甘南县| 静宁县| 锡林郭勒盟| 南京市|