ฉันต้องการสร้างสตริงที่มีตัวอักษร 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'*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'
นี่อาจเป็นคำถามเล็กน้อย แต่สำหรับผู้ที่สนใจในการสุ่มของสตริงที่สร้างขึ้นคำตอบของฉันจะเป็น:
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'