我需要在Python中生成一个包含n个字符的字符串。是否有一行代码可以使用现有的Python库实现此目的?例如,我需要一个由10个字母组成的字符串:
string_val = 'abcdefghij'
string_val = 'abcdefghij'
简单重复同一个字母10次:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
如果你希望得到更复杂的结果,例如n
个随机小写字母,那也只需要一行代码(不包括导入语句和定义n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
前十个小写字母是string.lowercase[:10]
(如果您之前导入了标准库模块string
的话;-)。
其他创建长度为10的字符串的方法包括:'x'*10
(这个字符串中所有的字符都是小写的x
);''.join(chr(ord('a')+i) for i in xrange(10))
(再次是前十个小写字母)等等,等等;-)。
.lowercase
(ascii_lowercase
在最近的 Python 2 和 Python 3 中都有)。 - Alex Martelli如果您只想要任何字母:
'a'*10 # gives 'aaaaaaaaaa'
如果您想要连续的字母(最多26个):
''.join(['%c' % x for x in range(97, 97+10)]) # gives 'abcdefghij'
为什么要“一行”?你可以把任何东西都放在一行上。
假设你想让它们以字母“A”开头,并每次增加一个字符(超过26个后循环),这是一行代码:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
*
运算符:>>> 'a'*5
'aaaaa'