2011-07-18 34 views
2

我想生成N長的這段代碼的隨機數字符串:Python的隨機數字字母和額外的發電機

import random 
import string 

N=512 
print ''.join(random.choice(string.ascii_uppercase + string.digits + string.ascii_lowercase) for x in range(N)) 

現在缺少的是,我想補充的「特殊字符,例如像」 @ ,;:!§$%& /( 「」 我想輸出到一個換行符.txt文件的例子後10,15跡象

任何幫助將是巨大的

謝謝你的時間。

回答

2
import random 
import string 

allowable_gibberish = string.ascii_letters + string.digits + string.punctuation 
def gibberish_maker(gibberish=allowable_gibberish,n=512,new_line_every=15): 
    str = ''.join(random.choice(gibberish) for x in range(n)) 
    return '\n'.join(str[i:i+new_line_every] for i in xrange(0, len(str), new_line_every)) 

注:string.ascii_letters是一樣的string.ascii_uppercase + string.ascii_lowercase。

+0

Thx對於這個腳本也很多!但在這裏,我得到:AttributeError:'模塊'對象沒有屬性'ascii_punctuation' – digit

+0

對不起,我在一個整個「ascii_」前綴的卷。這不屬於標點符號,它只是「標點符號」。 – Jonathanb

+0

COOL works我加了:f = open('gibberish.txt','w') f.write(gibberish_maker()) f.close() – digit

4

string模塊具有這樣的特殊字符類:

>>> print string.punctuation 
!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 

要保存生成的字符串到文件使用類似:

N=512 
chars_per_line = 15 

s = ''.join(random.choice(string.digits + string.ascii_letters + string.punctuation) for i in xrange(N)) 

fh = open('filename', 'w') 
try: 
    fh.writelines([s[i:i+chars_per_line] 
        for i in range(0, N, chars_per_line)]) 
finally: 
    fh.close() 
+1

很酷謝謝!輸出文件和換行符如何?你有什麼想法我可以做到這一點? – digit

+0

Python不喜歡「與」。我得到了SyntaxError:無效的語法 – digit

+0

在Python 2.6中是新的。在Python 2.5中,將'from __future__ import with_statement'放在文件的頂部。 – agf