在随机词生成器中分隔词

Separate Words in Random Word Generator

我写了一个小词生成器。我目前有提供不同单词的生成器,但无法弄清楚如何在打印密码时使用 split 函数在每个随机生成的单词之间插入连字符

当前输出:thisisapassword

期望的输出:这是一个密码

answer = urllib.request.urlopen('http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain')
txt = answer.read()
words = txt.splitlines()

password = ''
 for c in range(3):
password += random.choice(words)
print(password)

您可以做两件事:

  1. 当您附加每个新词时,也要附加一个连字符。循环结束后,使用 password = password[:-1]:

    删除结尾的连字符
    password = ''
    
    for c in range(3):
        password += random.choice(words)
        password += '-'
    
    password = password[:-1]
    print(password)
    
  2. 另一方面,您可以将所有三个单词存储为一个列表,然后使用 .join 添加连字符并转换为字符串。例如:

    password = []
    
    for c in range(3):
        password.append(random.choice(words))
    
    print('-'.join(password))
    

    如果你想将它压缩成一个单行代码,那么你有以下列表理解,正如@JonClements 指出的那样:

    password = '-'join(random.choice(words) for _ in range(3))
    

    或 Python 3.6:

    password = '-'join(random.choices(words, k=3))