我有一个字符串,里面有一些随机的东西,例如:
random_string = """
asdasdasd23123asdnos{}n
asdnoiaf{}aosndiasdasd
asd{}1239i123nig
hpodpfh{}askmdiasd
{asdasda
}asdasdasd
"""
我想用一个随机的十六进制值替换该字符串中出现的{}
,该值与之前替换其他花括号的值不同。在
我使用这个函数来生成100%随机的十六进制值。在
^{pr2}$我缺少一个函数或循环,其中十六进制的值取自列表get_random(n)
,将字符串中的{}
替换为列表中的十六进制值并打印输出,如果{}
中有任何字符,则应跳过它们。在
我使用的是模块re
,但并不是所有的值都是随机的,其中一些值很有可能是相似的。在
print(re.sub('{}', lambda _: binascii.b2a_hex(os.urandom(1)) + ' \\', random_string))
感谢任何帮助!在
正如我在OP评论中所暗示的,如果只有
{}
s,中间没有字符,那么下面的工作就可以了(用python3.6测试)输出:
^{pr2}$我觉得你把事情搞得太复杂了。函数b2a_hex生成2位十六进制字符串。因为只有256(0->;255)个元素,所以只需生成所有元素,然后洗牌并生成这些元素,直到它们消失:
您可以看到每次调用它都是
^{pr2}$00
和ff
之间所有唯一十六进制数字的随机列表:然后您的正则表达式变成:
相关问题 更多 >
编程相关推荐