Мне нужно сгенерировать строку с n символов в Python. Есть ли однострочный ответ для достижения этого с существующей библиотекой Python? Например, мне нужна строка из 10 букв:
string_val = 'abcdefghij'
Мне нужно сгенерировать строку с n символов в Python. Есть ли однострочный ответ для достижения этого с существующей библиотекой Python? Например, мне нужна строка из 10 букв:
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
s ;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(снова первые десять строчных букв), и т. Д. И т. Д. ;-).
.lowercase
( ascii_lowercase
есть в последних версиях Python 2, а также в Python 3).
Почему "одна линия"? Вы можете разместить что угодно на одной линии.
Предполагая, что вы хотите, чтобы они начинались с 'a' и увеличивались на один символ каждый раз (с переносом> 26), вот строка:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Это может быть немного не вопрос, но для тех, кто интересуется случайностью генерируемой строки, мой ответ будет таким:
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
источник для более глубокого понимания.
Если вы можете использовать повторяющиеся буквы, вы можете использовать *
оператор:
>>> 'a'*5
'aaaaa'