首页 > 解决方案 > Python bit.ly 链接词表生成器

问题描述

我一直在开发一个 Python 工具来生成 bit.ly 单词表。以下是 bit.ly 链接的特殊性:

我已经做了前三个条件,但我找不到最后一个条件。

from itertools import product

def firstN(chars, length):
    for firstNumber in product(chars, repeat=length):
        yield ''.join(firstNumber)

def combiwords(chars, length):
    for letters in product(chars, repeat=length):
        yield ''.join(letters)

def lastL(chars, length):
    for lastLetter in product(chars, repeat=length):
        yield ''.join(lastLetter)

def main():
    firstNumber = "32"
    letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    lastLetter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    for wordlen1 in range(1, 2):
        for first in firstN(firstNumber, wordlen1):
            for wordlen2 in range(6, 7):
                for combo in combiwords(letters, wordlen2):
                    for wordlen3 in range(1, 2):
                        for word in lastL(lastLetter, wordlen3):
                            print('https://bit.ly/' + first + combo + word)

if __name__=="__main__":
    main()

标签: pythongeneratorbit.lyword-list

解决方案


这可能是您正在搜索的内容:

https://www.geeksforgeeks.org/recursively-remove-adjacent-duplicates-given-string/

def removeUtil(string, last_removed):
 
    # If length of string is 1 or 0
    if len(string) == 0 or len(string) == 1:
        return string
 
    # Remove leftmost same characters
    # and recur for remaining
    # string
    if string[0] == string[1]:
        last_removed = ord(string[0])
        while len(string) > 1 and string[0] ==
                                    string[1]:
            string = string[1:]
        string = string[1:]
 
        return removeUtil(string, last_removed)
 
    # At this point, the first
    # character is definiotely different
    # from its adjacent. Ignore first
    # character and recursively
    # remove characters from remaining string
    rem_str = removeUtil(string[1:], last_removed)
 
    # Check if the first character
    # of the rem_string matches
    # with the first character of
    # the original string
    if len(rem_str) != 0 and rem_str[0] ==
                                         string[0]:
        last_removed = ord(string[0])
        return (rem_str[1:])
 
    # If remaining string becomes
    # empty and last removed character
    # is same as first character of
    # original string. This is needed
    # for a string like "acbbcddc"
    if len(rem_str) == 0 and last_removed ==
                                   ord(string[0]):
        return rem_str
 
    # If the two first characters of
    # str and rem_str don't match,
    # append first character of str
    # before the first character of
    # rem_str.
    return ([string[0]] + rem_str)
 
def remove(string):
    last_removed = 0
    return toString(removeUtil(toList(string),
                                    last_removed))
 
# Utility functions
def toList(string):
    x = []
    for i in string:
        x.append(i)
    return x
 
def toString(x):
    return ''.join(x)

将当前输出存储到列表中(例如wl

wl.append('https://bit.ly/' + first + combo + word)

并在您的循环remove遍历每个条目之后。


推荐阅读