2012-01-13 19 views
2

したがって、私はjythonで与えられた長さに基づいてランダムな文字列を返すメソッドを作る必要があります。 Pythonの代わりにJavaのランダムなクラスが使用されていることが分かっているので、私はPythonをランダムに実装することは簡単ですが、その方法を見つけることができませんでした。私は必要なすべての文字を含む文字列に基づいて文字列を作成しようとしていますJythonランダムな文字列の生成

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#のようにインデックスで文字列のcharにアクセスする方法を見つけるために継ぎ合せることはできません。

どのようにそれを行うには、または多分もPythonランダムなクラスをインポートする任意のアイデア?

答えて

1
c = chars.charAt(ind); 

JavaDocsガイド方法。

+0

うん、しかし、この場合、どのように私はPythonとJavaの提供するクラスを区別するのですか?私はjava.lang.Stringクラスをインポートし、その文字列をjava文字列オブジェクトとして作成しましたが、それはまだpythonオブジェクトとみなされています。そこにcharAtメソッドを呼び出すことはできません。何か案は? – TheBW

+1

まだPythonオブジェクトの場合、なぜ[]表記でアクセスできませんか?私はJythonでしばらく働いていませんが、IIRCはまだ動作しているはずです。それ以外の場合は、 'charsJava = java.lang.String(chars)'またはそのようなものでJavaオブジェクトを作成します。 – Naltharial

2

それはJythonのと私の作品、これを試してみてください:私はJythonののrandomモジュールではなく、JavaのRandomクラスを使用してい

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) 

お知らせ。さらに短いバージョン、(PEP-8のとおり)モジュールレベルの輸入とリストの内包表記を使用して:

import random, string 

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

[pep-8](http://www.python.org/dev/peps/pep-0008/)では、モジュールレベルのインポートが推奨されています。 – jfs

+0

@ J.F.Sebastianはあなたの提案に従って私の答えを編集しました。私は同意しますが、彼の質問では輸入は方法の中にあるので、OPのためにはOKだと思っていました。 –