Jython 随机字符串生成

3 投票
2 回答
2342 浏览
提问于 2025-04-17 10:09

我需要写一个方法,能够根据给定的长度返回一个随机字符串,用的是jython。如果我能用python的随机功能,那就简单多了,但我找不到办法,因为我看到的每个随机示例都是用java的随机类,而不是python的。

这是我写的代码片段:

  def getrstr (self, length):
    from java.util import Random
    import string
    chars = string.letter + string.digits
    str = ''
    for i in range(1, (length+1)):
      ind = random.nextInt(62) #there should be 62 charicters in chars string
      c = #this is the part where i should get radom char from string using ind
      str = str + c
    return str

我想根据一个包含所有需要字符的字符串来生成新的字符串。但我就是找不到像在C#中那样通过索引访问字符串中字符的方法。

有没有什么办法可以做到这一点,或者甚至导入python的随机类呢?

2 个回答

2

试试这个,Jython下对我有效:

def getrstr(self, length):
    import random, string
    seq = string.letters + string.digits
    randomstr = []
    for i in xrange(length):
        randomstr.append(random.choice(seq))
    return ''.join(randomstr)

注意我使用的是Jython的 random 模块,而不是Java的 Random 类。还有一个更简短的版本,使用列表推导和模块级导入(按照pep-8的规范):

import random, string

def getrstr(self, length):
    seq = string.letters + string.digits
    return ''.join(random.choice(seq) for _ in xrange(length))
2
c = chars.charAt(ind);

JavaDocs 是一个很好的参考资料。

撰写回答