programing

파이썬에서 무작위 문자열을 생성하는 방법은 무엇입니까?

powerit 2023. 8. 16. 22:42
반응형

파이썬에서 무작위 문자열을 생성하는 방법은 무엇입니까?

파이썬에서 무작위 문자열을 어떻게 생성합니까?

반복이 완료될 때까지 숫자와 문자로 반복해야 합니다.

이것이 제가 만든 것입니다.

def random_id(length):
    number = '0123456789'
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    id = ''
    for i in range(0,length,2):
        id += random.choice(number)
        id += random.choice(alpha)
    return id

소문자(예:)에서 문자열 생성:

import random, string

def randomword(length):
   letters = string.ascii_lowercase
   return ''.join(random.choice(letters) for i in range(length))

결과:

>>> randomword(10)
'vxnxikmhdc'
>>> randomword(10)
'ytqhdohksy'

이 질문은 상당히 무작위적이기 때문에 다음과 같은 경우에 도움이 될 수 있습니다.

import uuid
print(uuid.uuid4())
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
import random
import string

s = string.lowercase+string.digits
print(''.join(random.sample(s, 10)))
# prints 'jw72qidagk'

원래 질문에 대한 답변:

os.urandom(n)

인용 출처: http://docs.python.org/2/library/os.html

암호화 사용에 적합한 n개의 임의 바이트 문자열을 반환합니다.

이 함수는 OS별 임의성 소스에서 임의 바이트를 반환합니다.반환되는 데이터는 암호화 애플리케이션에 대해 충분히 예측할 수 있어야 하지만 정확한 품질은 OS 구현에 따라 다릅니다.UNIX와 유사한 시스템에서는 /dev/urandom을 쿼리하고 Windows에서는 CryptGenRandom을 사용합니다.랜덤성 소스를 찾을 수 없는 경우 Not Implemented Error가 발생합니다.

플랫폼에서 제공하는 난수 생성기에 대한 사용하기 쉬운 인터페이스는 난수를 참조하십시오.시스템 랜덤.

python3.6+모듈을 사용할 수 있습니다.

비밀 모듈은 암호, 계정 인증, 보안 토큰 및 관련 비밀과 같은 데이터를 관리하는 데 적합한 암호적으로 강력한 난수를 생성하는 데 사용됩니다.

특히, 비밀은 보안 또는 암호화가 아닌 모델링 및 시뮬레이션을 위해 설계된 랜덤 모듈의 기본 의사 난수 생성기보다 우선적으로 사용되어야 합니다.

생성 중의 테스트 에서.768bit찾은 보안 토큰:

  • random.choices()-0.000246
  • secrets.choice()-0.003529

secrets모듈은 속도가 느리지만 테스트 외에는 암호화 목적으로 사용해야 합니다.

import string, secrets

def random_string(size):        
        letters = string.ascii_lowercase+string.ascii_uppercase+string.digits            
        return ''.join(secrets.choice(letters) for i in range(size))

print(random_string(768))

때때로, 저는 반 발음이 가능하고, 반 기억할 수 있는 임의의 문자열을 원했습니다.

import random

def randomWord(length=5):
    consonants = "bcdfghjklmnpqrstvwxyz"
    vowels = "aeiou"

    return "".join(random.choice((consonants, vowels)[i%2]) for i in range(length))

그리고나서,

>>> randomWord()
nibit
>>> randomWord()
piber
>>> randomWord(10)
rubirikiro

4글자 단어를 사용하지 않으려면 설정 안 함length4까지

짐.

다음과 같은 임의의 ASCII 문자를 만들 수 있습니다.

import random
print chr(random.randint(0,128))

그런 다음 다음과 같이 더 긴 문자열을 작성합니다.

len = 50
print ''.join( [chr(random.randint(0,128)) for i in xrange(0,len)] )

당신은 어떤 종류의 무작위 문자열이 필요한지에 대해 많은 것을 말하지 않았습니다.은 하만어쨌든조, 은야합니다사해당신지▁를 조사해야 합니다.random모듈.

매우 간단한 솔루션이 아래에 붙여져 있습니다.

import random

def randstring(length=10):
    valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join((random.choice(valid_letters) for i in xrange(length)))

print randstring()
print randstring(20)
random_name = lambda length: ''.join(random.sample(string.letters, length))

길이는 <= len(string.letters) = 53이어야 합니다. 결과 예제

   >>> [random_name(x) for x in range(1,20)]
['V', 'Rq', 'YtL', 'AmUF', 'loFdS', 'eNpRFy', 'iWFGtDz', 'ZTNgCvLA', 'fjUDXJvMP', 'EBrPcYKUvZ', 'GmxPKCnbfih', 'nSiNmCRktdWZ', 'VWKSsGwlBeXUr', 'i
stIFGTUlZqnav', 'bqfwgBhyTJMUEzF', 'VLXlPiQnhptZyoHq', 'BXWATvwLCUcVesFfk', 'jLngHmTBtoOSsQlezV', 'JOUhklIwDBMFzrTCPub']
>>> 

즐기세요. ;)

이 패키지 설치:

pip3 install py_essentials

다음 코드를 사용합니다.

from py_essentials import simpleRandom as sr
print(sr.randomString(4))

다른 매개 변수의 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

import random 
import string

def get_random_string(size):
    chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
    ''.join(random.choice(chars) for _ in range(size))

print(get_random_string(20)

출력 : FfxjmkyyLG5HvLeRudDS

이 함수는 문자열 형식을 지정하기 위해 대문자, 숫자, 길이 구분 기호, no_of_blocks로 구성된 임의 문자열을 생성합니다.

예: len_blocks = 4, no_of_blocks = 4는 다음과 같은 패턴을 생성합니다.

F4nQ-Vh5z-JKEC-WhuS

여기서 길이 구분 기호는 4자 뒤에 "-"를 추가합니다.

XXXX-

다음 문자 패턴을 문자열로 생성하는 블록이 없습니다.

XXXX - XXXX - XXXX - XXXX

단일 랜덤 문자열이 필요한 경우 no_of_blocks 변수를 1로 유지하고 len_locks를 사용하여 랜덤 문자열의 길이를 지정합니다.

예: len_blocks = 10, no_of_blocks = 1은 다음과 같은 패턴을 생성합니다. 즉, 길이가 10인 임의 문자열,

F01xgCdoDU

import random as r

def generate_random_string(len_sep, no_of_blocks):
    random_string = ''
    random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in range(0,len_sep*no_of_blocks):
        if i % len_sep == 0 and i != 0:
            random_string += '-'
        random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)])
    return random_string

언급URL : https://stackoverflow.com/questions/2030053/how-to-generate-random-strings-in-python

반응형