Python 随机数字字母及附加生成器

2 投票
2 回答
2368 浏览
提问于 2025-04-16 21:45

我想用这段代码生成一个长度为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 个回答

5

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()
3
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 的组合。

撰写回答