我正在尝试使用
random
模块生成单词列表。我想要的图案是这样的:
D7FE-PWO3-ODKE
我可以生成字符串,但我无法弄清楚如何在它们之间得到连字符
(-)
。
import random
import string
wordlist = string.ascii_uppercase + string.digits
def random_string(len):
for i in range(10):
result = ''.join(random.choice(wordlist) for _ in range(len))
print(result)
random_string(12)
我已经尝试过这种方法,但这会在每个
(-)
之后给出空格。
def random_string():
for i in range(10):
str1 = ''.join(random.choice(wordlist) for _ in range(4)) + '-'.strip()
str2 = ''.join(random.choice(wordlist) for _ in range(4)) + '-'.strip()
str3 = ''.join(random.choice(wordlist) for _ in range(4))
print(str1, str2, str3)
random_string()
我建议这种更灵活、更简单的解决方案,它只添加一行代码,并且仍然保持可读性。
生成字符串后,只需每 4 个字符剪切字符串并用连字符将它们粘合起来即可。
import random
import string
wordlist = string.ascii_uppercase + string.digits
def random_string(str_len, count=10):
for i in range(count):
result = ''.join(random.choice(wordlist) for _ in range(str_len))
# Next line adds the hyphens every 4 characters.
result = '-'.join(result[i:i + 4] for i in range(0, len(result), 4))
print(result)
random_string(12)
您还可以提供其他参数,例如
group=4
等创造更灵活的功能。 :)
编辑: 这不是连字符连接的列表理解版本 for 循环:
results = []
for i in range(0, len(result), 4):
results.append(result[i:i + 4])
print('-'.join(results))
您可以简单地使用f-string-formatting
def random_string():
for i in range(10):
str1 = ''.join(random.choice(wordlist) for _ in range(4))
str2 = ''.join(random.choice(wordlist) for _ in range(4))
str3 = ''.join(random.choice(wordlist) for _ in range(4))
final = f'{str1}-{str2}-{str3}'
print(final)