To generate random data in Python, we generally use Python's random module. And in this tutorial, you will learn how to use the Python random module to create random strings and passwords.
How to create a random string in Python?
To generate a random string of any length, we can use the Python random module. Here are the steps to create a random string in Python.
Step 1: Import the string and random modules
import string import random
The
string
module has different string constant values for all ASCII characters, which include uppercase & lowercase alphabets, digits, and special characters or symbols. We will use the string module as a database to get the random characters.
With the
random
module methods, we can pick the random characters from the string module to generate random string values.
Step 2: Create a string value of lowercase letters
After importing the modules to the script, we need to create an identifier of all the letters, either lowercase or uppercase, from which we will pick the random characters.
lowercase_letters = string.ascii_lowercase #'abcdefghijklmnopqrstuvwxyz'
Step 3: The length of the random string and an empty random string.
Store the length of the random string as a
size
identifier. And also, initialize an empty string that will store the random letters for the random string.
size = 8 random_string = ""
Step 4: Run a loop from range 0 to size
Now we need to run a loop for the total size of the random string. And with each iteration, we will pick a random number from
lowercase_letters
using the
random.choice()
function and add it to the
random_string
.
for i in range(size): #pick a random letter letter = random.choice(lowercase_letters) # add the random letter to random_string random_string += letter
Example
Let's put all the steps together and generate a long Python random string.
import string import random lowercase_letters = string.ascii_lowercase #'abcdefghijklmnopqrstuvwxyz' size = 8 random_string = "" for i in range(size): #pick a random letter letter = random.choice(lowercase_letters) # add the random letter to random_string random_string += letter print("Your Random String is: ", random_string)
Output
Your Random String is: ztaoelsf
In the above example, we only pick the random characters from the lowercase alphabets. We can also use a different set of characters such as uppercase, digits, or special characters. The string module provides different properties for various ASCII characters.
String Properties | Description | Return Value |
string.ascii_lowercase | It returns a string of all lowercase letters. | 'abcdefghijklmnopqrstuvwxyz' |
string.ascii_uppercase | It returns a string of all uppercase letters. | 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
string.ascii_letters | It returns a string of all upper and lower case letters. | 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' |
string.digits | It returns a string of numbers from 0 to 9 | '0123456789' |
string.punctuations | It returns a string of punctuations or special characters. | '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' |
string.whitespace | It return a string of escape characters such as tab, linefeed, new line etc. | ' \t\n\r\x0b\x0c' |
string.printable | It returns a string of all characters that are printable string values. | '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c' |
Create a Random String of Lower and Upper case letters
In the above example, we see how we can generate a random string of lowercase letters. Now let's write a Python program that can generate a random string containing upper case and lowercase letters.
To pick the random lowercase and uppercase letters, we can either use the string concatenation of
string.ascii_lowercases+string.ascii_uppercases
or
string.ascii_letters
.
Example
import string import random letters = string.ascii_letters size = 8 random_string = "" for i in range(size): #pick a random letter letter = random.choice(letters) # add the random letter to random_string random_string += letter print("Your Random String is: ", random_string)
Output
Your Random String is: pwVWSmQE
Create a Random String of specific letters letters
To create a random string from a specific set of letters, we first need to specify all the specific letters as a single string. And with
random.choice()
function, we can pick random letters from it.
Example
import string import random #specific letters letters = "TECHGEEKtechgeek" size = 8 random_string = "" for i in range(size): #pick a random letter letter = random.choice(letters) # add the random letter to random_string random_string += letter print("Your Random String is: ", random_string)
Output
Your Random String is: ehEHCHkE
Generate Random String without Repeating letters
While creating a random string using Python, there is a high chance that the random string may contain repetitive characters. This is because of the random.choice() function picks random characters from the source string. To pick only unique characters, we can use the random.sample() function.
The
random.sample(sequence, k)
function accepts two arguments
sequence
and
k
,
and it returns a list of k unique random items or characters from the sequence. In the case of a string, it will return a list of random k numbers of characters from the string.
Example
import string import random #specific letters letters = string.ascii_letters size = 8 #generate a random unique chracters string random_string = "".join(random.sample(letters, k=size)) print("Your Random String is: ", random_string)
Output
Your Random String is: fzrDgqOt
How to create a Random Password with letters, special characters, and digits?
Suppose you need to write a script that generates random strong passwords, which can include letters, special characters, or digits. How would you do that?
For creating such a random password generator in Python, we can use the combination of
string.ascii_letters
,
string.digits
,
and
string.punctuation
for the string source and
random.choice()
function to pick random letters, digits, and special characters.
Example 1: Create a random password in Python
import string import random #all characters characters = string.ascii_letters + string.digits + string.punctuation #size of the password size = 10 #generate a random password using Python random_password = "" for i in range(size): #pick a random character from characters character = random.choice(characters) #add the random pick character to the random password random_password += character print("Your Random password is:",random_password)
Output
Your Random password is: kf}3%0YbK5
Example 2: Create a random password of unique characters in Python
There is a chance that the above random password generator example might create a password of all same characters. To create a password with all random unique characters we can use the random.sample() function instead of random.choice().
import string import random #all characters characters = string.ascii_letters + string.digits + string.punctuation #size of the password size = 10 #generate a random strong password using python random_password= "".join(random.sample(characters, k=size)) print("Your Random Unique characters password is: ", random_password)
Output
Your Random Unique characters password is: fSRl$(Es96
Random Passwords with fixed numbers of letters, digits, and symbol
Let's say you need to generate a random strong password that must contain at least one uppercase letter, one lowercase letter, one digit, and one special character. The above two password generator programs may give us strong and unique passwords, but still, there is a chance that they might not include all the characters. It might also be possible they only create a random unique password of all lowercase letters, or digits, or special characters.
If you want to generate a password that must include at least one of all the characters, we have to specify the count for all the characters group, pick the random character from them and add them to create a single strong password.
Example
import string import random #function to generate password def generate_password(upper_count=1, lower_count=1, digits_count=1, special_count=1): random_upper = "".join(random.sample(string.ascii_lowercase, k=upper_count)) random_lower = "".join(random.sample(string.ascii_uppercase, k=lower_count)) random_digits = "".join(random.sample(string.digits, k=digits_count)) random_special = "".join(random.sample(string.punctuation, k= special_count)) #add all the random chracters to form a password random_password = random_upper+random_lower+random_digits+random_special print(f"Your {len(random_password)} characters long Random Password is: ", random_password) #upper_count >= 26 upper_count = 3 # 3 uppercase characters #lower_count >=26 lower_count = 5 #5 lowercase characters #digits_count >=10 digit_count = 4 # 4 digits #special_count >=32 special_count = 4 #4 special characters generate_password(upper_count,lower_count, digit_count,special_count)
Output
Your 16 characters long Random Password is: ijsHPZRL4290*$[/
How to generate secure random string tokens in Python?
While dealing with APIs, we are often required to generate random secure tokens for various purposes, such as authentication and secure communication gateways. Python comes with inbuilt secrets modules for such tasks, which can generate cryptographically strong random numbers, passwords, and security tokens.
Example 1:
Let's create a 16 bytes hexadecimal random string token using the Python secrets library and
token_hex(nbytes)
module.
import secrets print("Your 16 bytes hexadecimal string token is:", secrets.token_hex(16))
Output
Your 16 bytes hexadecimal string token is: a25f48a34a6bf77f5120dfc32d0581b4
Example 2
To create a URL friendly secure token we can use the secrets'
token_urlsafe(nbytes)
method.
import secrets print("Your 16 bytes url safe string token is:", secrets.token_urlsafe(16)
Output
Your 16 bytes url safe string token is: gX0OllOPGgTSDmYZ7aMwHA
How to generate a secure random UUID in Python?
Most of the high-end applications provide a secure random UUID to every user for unique identification. In the backend database more than integer ID, UUID is used as a primary key. Python has a standard library UUID, that provides a uuid4() method to generate random UUID's.
Example
Let's generate a random UUID using Python
import uuid print("Your secure UUID is", uuid.uuid4())
Output
Your secure UUID is 695aff53-d77f-4c79-9add-0cade070288f
Conclusion
Generate random strings, and numbers often asked during Python interviews. There are many ways to generate a random string in Python, and in this article, we have only discussed the most common and efficient ones. For a more real-world approach, we also discussed how we could generate random and unique passwords, tokens, and UUID using Python and its different libraries.
If we have missed any approach, or you want to share your thoughts and code with us. Please write your's comments in the comment section.
People are also reading:
- Merge Sort for Linked Lists
- Convert a Binary Tree to Doubly Linked List
- Reverse a Linked List
- Subset Sum Problem
- Print Triangle Using * Character
- Check for pairs in an array with a particular sum
- Minimum Edit Distance
- Rearrange an array such that arr[i] = i
- Modular Exponentiation in Logarithmic Time
- Delete Nodes And Return Forest
Leave a Comment on this Post