我正在尝试使用两个起始编号+字母组合生成随机Unicode字符..
我在下面尝试了以下但是我收到了一个错误.
def rand_unicode():
b = ['03','20']
l = ''.join([random.choice('ABCDEF0123456789') for x in xrange(2)])
return unicode(u'\u'+random.choice(b)+l,'utf8')
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence
Run Code Online (Sandbox Code Playgroud)
我使用Python 2.6.
例如:
str = 'Hello world. Hello world.'
Run Code Online (Sandbox Code Playgroud)
变成:
list = ['!','-','=','~','|']
str = 'He!l-lo wor~ld|.- H~el=lo -w!or~ld.'
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
s = 'Hello world'
c = ['a','b','c','d','e','f']
n = ['1','2','3','4','5','6']
l = [random.choice(c),random.choice(n)]
return ''.join('%s%s' % (x, random.choice(l) if random.random() > 0.5 else '') for x in s)
Run Code Online (Sandbox Code Playgroud)
这将输出:
He5lloe w5o5rl5de
Run Code Online (Sandbox Code Playgroud)
但我的目标是这样的代码会产生:
s = 'Hello world'
n = ['1','2','3','4','5','6']
return ''.join('%s%s' % (x, random.choice(n) if random.random() > 0.5 else '') for x in s)
Run Code Online (Sandbox Code Playgroud)
这是:
H4e3l3l6o wo4r3ld
Run Code Online (Sandbox Code Playgroud)
如果有人能够解释为什么两者的反应不同于我的假设,那将是很好的.
对不起,我应该说明我的意图.我想通过连接中for循环的每次迭代从两个列表中随机选择一个元素.相反,我所拥有的是两个元素被选择一次并在所选择的两个元素之间随机选择.
这是我不想要的:
n = [1,2,3,4,5]
s = ['!','-','=','~','|']
l = [random.choice(n), random.choice(s)] # 1,!
# He1l!lo W!or1l!d
Run Code Online (Sandbox Code Playgroud)
这就是我要的:
n = [1,2,3,4,5] …Run Code Online (Sandbox Code Playgroud)