在特定范围内生成随机Unicode

4
我正在尝试生成以两个数字字母组合开头的随机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')

我遇到的错误是:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence

我使用Python 2.6。

1个回答

5
是的,那不是正确的方法。
return unichr(random.choice((0x300, 0x2000)) + random.randint(0, 0xff))

我该如何使其在U+0300-U+036F和U+20D0-U+20FF范围之间? - mikeyy
最简单的方法是使用两个 range() 调用来生成范围,将它们相加以融合它们,然后使用 random.choice() 来选择一个。 - Ignacio Vazquez-Abrams
@mikeyy: unichr(random.choice(range(0x300, 0x370) + range(0x20d0, 0x2100))) - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接