Python随机数字字母和附加发生器

时间:2011-07-18 13:10:41

标签: python random generator

我想使用以下代码生成N长度的随机数字符串:

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 个答案:

答案 0 :(得分:4)

string模块有一个特殊字符类:

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

要将生成的字符串保存到文件,请使用以下内容:

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 :(得分: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相同。