生成在另一个字符串中找不到的随机字符

时间:2017-10-04 23:21:05

标签: python string random

我有一个字符串,它有一些字符,我需要生成一个随机的大写字符,这在我的字符串中找不到。

实施例: str =“SABXT” 随机字符可以是不在str

中的任何字符

我试过了:

string.letters = "SABXT"
random.choice(string.letters)

但这恰恰相反,它从我的str

生成了char

2 个答案:

答案 0 :(得分:3)

获取字符串中没有的字符列表,然后使用random.choice返回其中一个字符。

import string
import random

p = list(set(string.ascii_uppercase) - set('SAXBT'))
c = random.choice(p)

当然,后续的random.choice可能看起来多余,因为set会对订单进行洗牌,但您无法真正依赖于随机性的设置顺序。

答案 1 :(得分:1)

import string,random
prohibitted = "SABXT" 

print random.choice(list(set(string.ascii_uppercase)-set(prohibitted)))

是单向的。

另一个可能是:

import string,random
prohibitted = "SABXT" 
my_choice = random.randint(0,26)
while char(ord('A')+my_choice) in prohibitted:
    my_choice = random.randint(0,26)
print char(ord('A')+my_choice)

另一种方式可能是:

import string,random
my_choice = random.choice(string.ascii_uppercase)
while my_choice in prohibitted:
    my_choice = random.choice(string.ascii_uppercase)