生成具有特定模式的随机字符串

问题描述 投票:0回答:2

我正在尝试使用

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()
python-3.x
2个回答
1
投票

我建议这种更灵活、更简单的解决方案,它只添加一行代码,并且仍然保持可读性。

生成字符串后,只需每 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))

1
投票

您可以简单地使用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)
© www.soinside.com 2019 - 2024. All rights reserved.