在随机词生成器中分隔词
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)
您可以做两件事:
当您附加每个新词时,也要附加一个连字符。循环结束后,使用 password = password[:-1]
:
删除结尾的连字符
password = ''
for c in range(3):
password += random.choice(words)
password += '-'
password = password[:-1]
print(password)
另一方面,您可以将所有三个单词存储为一个列表,然后使用 .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))
我写了一个小词生成器。我目前有提供不同单词的生成器,但无法弄清楚如何在打印密码时使用 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)
您可以做两件事:
当您附加每个新词时,也要附加一个连字符。循环结束后,使用
删除结尾的连字符password = password[:-1]
:password = '' for c in range(3): password += random.choice(words) password += '-' password = password[:-1] print(password)
另一方面,您可以将所有三个单词存储为一个列表,然后使用
.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))