मुझे पायथन में n वर्णों के साथ एक स्ट्रिंग उत्पन्न करने की आवश्यकता है। क्या मौजूदा पायथन पुस्तकालय के साथ इसे प्राप्त करने के लिए एक पंक्ति का उत्तर है? उदाहरण के लिए, मुझे 10 अक्षरों की एक स्ट्रिंग चाहिए:
string_val = 'abcdefghij'
मुझे पायथन में n वर्णों के साथ एक स्ट्रिंग उत्पन्न करने की आवश्यकता है। क्या मौजूदा पायथन पुस्तकालय के साथ इसे प्राप्त करने के लिए एक पंक्ति का उत्तर है? उदाहरण के लिए, मुझे 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रों ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(पहले दस छोटे अक्षरों फिर से), आदि, आदि ;-)।
.lowercase( ascii_lowercaseहाल ही में पायथन 2 के साथ-साथ पायथन 3 में भी है)।
क्यों "एक पंक्ति"? आप एक लाइन पर कुछ भी फिट कर सकते हैं।
यह मानते हुए कि आप उन्हें 'क' से शुरू करना चाहते हैं, और हर बार एक पात्र द्वारा बढ़ाना (रैपिंग> 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))
यदि आप दोहराया अक्षरों का उपयोग कर सकते हैं, तो आप *ऑपरेटर का उपयोग कर सकते हैं :
>>> 'a'*5
'aaaaa'