Zufällige Zeichenketten in Python generieren

String-Konstanten

In der folgenden Liste sind Zeichenkettenkonstanten aufgeführt, die verwendet werden können, um einen Satz von Zeichen als Quelle für die Erstellung einer zufälligen Zeichenkette zu erhalten.

  • ascii_lowercase: enthält alle Kleinbuchstaben
  • ascii_uppercase: enthält alle Großbuchstaben
  • ascii_letters: enthält alle Klein- und Großbuchstaben
  • digits: enthält die Ziffern ‘0123456789’.
  • punctuation: enthält die Zeichen und Symbole !”#$%&'()*+,-./:;<=>?@[\]^_`{|}~.
  • whitespace: enthält die Zeichen Leerzeichen, tab, linefeed, return, formfeed und vertical tab [^ \t\n\x0b\r\f]
  • printable: alle Zeichen, die als druckbar gelten, dies ist die Kombination der Konstanetn digits, ascii_letters, punctuation und whitespace.

Wie man eine zufällige Zeichenkette in Python erzeugt

Wir können eine zufällige Zeichenkette mit dem Modul random und dem Modul string erzeugen. Man verwendet folgende Schritte, um eine zufällige Zeichenfolge beliebiger Länge in Python zu erstellen.

Beispiel

1. Importieren der Module string und random

Das String-Modul enthält verschiedene String-Konstanten, die die ASCII-Zeichen aller Groß- und Kleinschreibung enthalten. Es hat separate Konstanten für Kleinbuchstaben, Großbuchstaben, Ziffern und Sonderzeichen, die wir als Quelle für die Erzeugung einer zufälligen Zeichenkette verwenden.

Man übergibt String-Konstanten als Zufallsquelle an das Random-Modul, um eine zufällige Zeichenkette zu erzeugen

2. Verwenden der String-Konstante ascii_lowercase

string.ascii_lowercase gibt eine Liste aller Kleinbuchstaben von ‚a‘ bis ‚z‘ zurück. Diese Daten werden als Quelle für die Erzeugung zufälliger Zeichen verwendet.

3. Bestimmen der Länge einer Zeichenkette

Man entscheidet, wie viele Zeichen man in der resultierenden Zeichenkette haben möchte.

4. Verwenden einer for-Schleife und die Funktion random choice(), um Zeichen aus einer Quelle auszuwählen

Man führt eine for-Schleife bis zur festgelegten Länge der Zeichenkette aus und verwendet die Funktion random choice() in jeder Iteration, um ein einzelnes Zeichen aus der Zeichenkonstante auszuwählen und es mit einer join()-Funktion zur Zeichenkettenvariablen hinzuzufügen.

import random
import string

def get_random_string(length):
    # choose from all lowercase letter
    letters = string.ascii_lowercase
    result_str = ''.join(random.choice(letters) for i in range(length))
    print("Random string of length", length, "is:", result_str)

get_random_string(8)
get_random_string(6)
get_random_string(4)

Ausgabe:

Random string of length 8 is: ijarubtd
Random string of length 6 is: ycfxbs
Random string of length 4 is: dpla

Die Funktion random.choice() wird verwendet, um ein einzelnes Element aus einer beliebigen Folge auszuwählen, und sie kann Zeichen wiederholen.

Die obigen Zufallszeichenfolgen enthalten alle Kleinbuchstaben. Wenn man nur Großbuchstaben wünscht, verwendet man stattdessen die Konstante string.ascii_uppercase anstelle von string.ascii_lowercase.

Zufällige Zeichenfolge aus Klein- und Großbuchstaben

Um in Python eine zufällige Zeichenfolge mit einer Kombination aus Klein- und Großbuchstaben zu erzeugen, muss man die Konstante string.ascii_letters als Quelle verwenden. Diese Konstante enthält alle Klein- und Großbuchstaben.

import random
import string

def get_random_string(length):
    # With combination of lower and upper case
    result_str = ''.join(random.choice(string.ascii_letters) for i in range(length))
    # print random string
    print(result_str)

# string of length 8
get_random_string(8)
get_random_string(8)

Ausgabe

WxQqJQlD
NoCpqruK

Zufällige Zeichenfolge aus bestimmten Buchstaben

Wenn man eine zufällige Zeichenkette aus einem festen Satz von Zeichen erzeugen möchte, verwendet man das folgende Beispiel.

import random

# Random string of length 5
result_str = ''.join((random.choice('abcdxyzpqr') for i in range(5)))
print(result_str)

Ausgabe

ryxay

Zufällige Zeichenkette ohne Zeichenwiederholungen

Hinweis: Die Methode choice() kann Zeichen wiederholen. Wenn man keine wiederholten Zeichen in der resultierenden Zeichenkette haben möchte, verwendet man die Methode random.sample().

import random
import string

for i in range(3):
    # get random string of length 6 without repeating letters
    result_str = ''.join(random.sample(string.ascii_lowercase, 8))
    print(result_str)

Ausgabe

wxvdkbfl
ztondpef
voeduias

 

Warnung: Wie man in der Ausgabe sehen kann, sind alle Zeichen eindeutig, aber es ist weniger sicher für eine Passwort-Generierung, weil es die Wahrscheinlichkeit von Buchstabenkombinationen reduziert, da wir keine sich wiederholenden Buchstaben und Ziffern zulassen.