我需要在Python中生成一个n个字符的字符串。用现有的Python库是否可以实现这一点?例如,我需要一个10个字母的字符串:
string_val = 'abcdefghij'
前十个小写字母是string.lowercase[:10](当然,如果你之前已经导入了标准库模块string;-)。
string.lowercase[:10]
string
其他“生成10个字符的字符串”的方法:'x'*10(所有10个字符都将是小写的xs;-), ''.join(chr(ord('a')+i) for i in xrange(10))(前10个小写字母),等等,等等;-)。
'x'*10
x
''.join(chr(ord('a')+i) for i in xrange(10))
简单地重复同一个字母10次:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
如果你想要一些更复杂的东西,比如n随机小写字母,它仍然只有一行代码(不包括import语句和定义n):
n
from random import choice from string import ascii_lowercase n = 10 string_val = "".join(choice(ascii_lowercase) for i in range(n))
如果你可以使用重复字母,你可以使用*操作符:
*
>>> 'a'*5 'aaaaa'
为什么是“一行”?你可以把任何东西放在一行上。
假设你想让它们以'a'开头,每次增加一个字符(换行> 26),下面是一行:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x)))) >>> mkstring(10) 'abcdefghij' >>> mkstring(30) 'abcdefghijklmnopqrstuvwxyzabcd'
如果你只想要任何字母:
'a'*10 # gives 'aaaaaaaaaa'
如果你想要连续的字母(最多26个):
''.join(['%c' % x for x in range(97, 97+10)]) # gives 'abcdefghij'
这可能有点离题,但对于那些对生成字符串的随机性感兴趣的人来说,我的答案是:
import os import string def _pwd_gen(size=16): chars = string.letters chars_len = len(chars) return str().join(chars[int(ord(c) / 256. * chars_len)] for c in os.urandom(size))
参见这些 答案和random.py的源代码了解更多信息。
random.py