Saya perlu membuat string dengan n karakter dalam Python. Apakah ada jawaban satu baris untuk mencapai ini dengan perpustakaan Python yang ada? Sebagai contoh, saya perlu string 10 huruf:
string_val = 'abcdefghij'
Saya perlu membuat string dengan n karakter dalam Python. Apakah ada jawaban satu baris untuk mencapai ini dengan perpustakaan Python yang ada? Sebagai contoh, saya perlu string 10 huruf:
string_val = 'abcdefghij'
Jawaban:
Untuk hanya mengulangi huruf yang sama 10 kali:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
Dan jika Anda menginginkan sesuatu yang lebih kompleks, seperti n
huruf kecil acak, itu masih hanya satu baris kode (tidak termasuk pernyataan impor dan mendefinisikan n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Sepuluh huruf kecil pertama adalah string.lowercase[:10]
(jika Anda telah mengimpor modul perpustakaan standar string
sebelumnya, tentu saja ;-).
Cara lain untuk "membuat string 10 karakter": 'x'*10
(semua sepuluh karakter akan menjadi huruf kecil x
s ;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(sepuluh huruf kecil pertama lagi), dll, dll ;-).
.lowercase
( ascii_lowercase
dalam Python 2 terbaru dan Python 3).
Kenapa "satu baris"? Anda dapat memasukkan apa pun ke dalam satu baris.
Dengan asumsi Anda ingin mereka memulai dengan 'a', dan naik satu karakter setiap kali (dengan pembungkus> 26), inilah sebuah baris:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Ini mungkin sedikit keluar dari pertanyaan, tetapi bagi mereka yang tertarik pada keacakan string yang dihasilkan, jawaban saya adalah:
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))
Lihat jawaban ini dan sumber untuk informasi lebih lanjut.random.py
Jika Anda dapat menggunakan huruf yang diulang, Anda dapat menggunakan *
operator:
>>> 'a'*5
'aaaaa'