在Python中,如何在一行代码中创建一个包含n个字符的字符串?

时间:2009-09-14 21:26:10

标签: python string

我需要在Python中生成一个包含n个字符的字符串。有没有一个答案可以用现有的Python库实现这一目标?例如,我需要一个10个字母的字符串:

string_val = 'abcdefghij'

6 个答案:

答案 0 :(得分:245)

简单地重复相同的字母10次:

string_val = "x" * 10  # gives you "xxxxxxxxxx"

如果你想要更复杂的东西,比如n随机小写字母,它仍然只有一行代码(不包括import语句和定义n):

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))

答案 1 :(得分:9)

前十个小写字母为string.lowercase[:10](如果您先前已导入标准库模块string; - )。

“制作10个字符的字符串”的其他方法:'x'*10(所有十个字符都是小写x s ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(前十个小写字母再次)等等; - )。

答案 2 :(得分:4)

如果您只想要任何字母:

 'a'*10  # gives 'aaaaaaaaaa'

如果你想要连续的字母(最多26个):

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'

答案 3 :(得分:3)

为什么“一行”?你可以将任何东西放在一行上。

假设你希望它们以'a'开头,并且每次增加一个字符(包裹> 26),这里有一行:

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'

答案 4 :(得分:2)

如果您可以使用重复的字母,则可以使用*运算符:

>>> 'a'*5

'aaaaa'

答案 5 :(得分:1)

这可能有些问题,但对于那些对生成的字符串的随机性感兴趣的人,我的回答是:

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))

有关更多信息,请参阅these answersrandom.py的来源。