15

7n5lureddit URL 中的内容是什么

http://www.reddit.com/r/reddit.com/comments/7n5lu/man_can_fly_if_you_watch_one_video_in_2

...它是如何产生的?

更新:@Gerald,我最初认为这是对 id 的一些混淆。它只是将整数转换为更紧凑的表示。我在想,为什么要这样做?为什么不使用原始整数本身!

>>> to36(4000)
'334'
>>> to36(4001)
'335'
4

4 回答 4

28

reddit 源代码可用!这是我发现生成该字符串的内容:

def to_base(q, alphabet):
    if q < 0: raise ValueError, "must supply a positive integer"
    l = len(alphabet)
    converted = []
    while q != 0:
        q, r = divmod(q, l)
        converted.insert(0, alphabet[r])
    return "".join(converted) or '0'

def to36(q):
    return to_base(q, '0123456789abcdefghijklmnopqrstuvwxyz')

和其他地方,在“链接”类下:

@property
def _id36(self):
    return to36(self._id)
于 2009-01-04T05:21:43.973 回答
0

这看起来像是线程的唯一 ID。它最有可能用于在数据库中查找线程。

于 2009-01-04T05:13:45.377 回答
0

它是一个整数,以 36 为基数。id 是按顺序生成的。例如, id 之后的评论89是 id8a等。鉴于此,您不需要 URL 中的任何其他信息。

理论上,评论、帖子、消息、用户和 subreddit 可以具有相同的 ID 并计数。您可以通过它们的“全名”来区分它们,即事物的类型、下划线,然后是下划线。

t1是评论,t2是用户,t3是提交,t4是消息,t5是 subreddit,t6是奖励,ModAction是主持人操作,ModmailConversation是 modmail 对话等。

有关更多信息,请参阅API 文档

于 2019-06-05T21:06:33.530 回答
-1

一点评论。

对于这个例子来说这还不够,但通常附加到列表中

a = []
for i in range(NNN): a.append(i)
a.reverse()

确实比在头部插入更有效。

a = []
for i in range(NNN): a.insert(0,i)

.

于 2009-01-04T07:56:11.603 回答