You are currently viewing Random String Generation with Letters and Digits in Python

We can use the random and string Python modules to generate random strings with letters (uppercase/lowercase) and digits. However, there are other ways of doing this task, which we will discuss in this article.

Advertisements

1. Quick Examples of Generating Random String with Letters and Digits

These examples will give you a high-level idea of how to generate a random string consisting of letters and digits using the secrets and random modules in Python. We will explain these methods in more detail letter on.


import secrets
import random
import string

# Method No 1 : Using secrets module
letters_and_digits = string.ascii_uppercase + string.digits
# List of random Uppercase letter and digits
random_let_digit = [secrets.choice(letters_and_digits) for i in range(10)]
# Join the list 
random_string_and_digits=''.join(random_let_digit)

# Method No 2 : Using random module
# Random Upper case letter and digits
letters_and_digits = string.ascii_uppercase + string.digits
# Random list of Uppercase letters and digits
random_let_digit = [random.choice(letters_and_digits) for i in range(10)]
# Join the list
random_string_and_digits=''.join(random_let_digit)

2. Generate Random Letters of String in Python

One of the easiest ways to generate a random string with uppercase/lowercase letters is to use the random.choice() function from the Python random module. This function returns a randomly selected element from the given sequence. The below example generates random uppercase letters.


# Import random
import random

# Upper caset letters to select from
uppercase_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
random_letters = ""

# Generate 5 Random Uppercase letters
for i in range(5):
    random_letter = random.choice(uppercase_letters)
    random_letters += random_letter

print(f"Random uppercase letters: {random_letters}")

In the above example, we have provided all the uppercase letters, however, we can also use the string.ascii_uppercase to generate the same set of uppercase letters. So the above example will look like this.


# Import modules
import random
import string

# Using the string module
uppercase_letters =  string.ascii_uppercase
random_letters = ""

# Generate random 5 letters
for i in range(5):
    random_letter = random.choice(uppercase_letters)
    random_letters += random_letter

print(f"Random uppercase letters: {random_letters}")

3. Generate Random Digits of String in Python

To generate random digits in Python use the secrets.choice() function from the secrets module. This function is similar to random.choice(), but it is more secure and cryptographically safe. We can use this function to generate a random digit by passing a string containing all digits as the sequence to choose from.

We can then generate multiple random digits using a loop or list comprehension, similar to how we generated multiple random uppercase letters.


# Generate random digits
import random

random_digits = ""

# Generate 5 random integers
for i in range(5):
    random_digit = random.randint(0, 9)
    random_digits += str(random_digit)

print(f"Random digits: {random_digits}")

4. Random String Generation With Letters and Digits

To generate a random string with uppercase letters and digits use the secrets module. We can use the secrets.choice() function to randomly select characters from a string containing all uppercase letters and digits.


# Random Numbers + Random Digits Generation
import secrets
import string

# Function that take lenght is parameter
def generate_random_string(length):
    # Generate random digits and number
    alphabet = string.ascii_uppercase + string.digits
    return ''.join(secrets.choice(alphabet) for i in range(length))

# Example: call the function
print(generate_random_string(10)) 

# Output: "B8TUW8Y3VT"

print(generate_random_string(5)) 

# Output: "7VKJL"

Another way to generate a random string with uppercase letters and digits is to use the random module. This module provides random.choice(), which is similar to secrets.choice(). The random module is not suitable for security-related tasks, as the generated values may not be truly random.


# Import
import random
import string

# Create function
def generate_random_string(length):
    alphabet = string.ascii_uppercase + string.digits
    return ''.join(random.choice(alphabet) for i in range(length))

# Example usage:
print(generate_random_string(10)) # Output: "P3HBJI7V1S"
print(generate_random_string(5)) # Output: "GZ4X8"

5. Secrets Module – Random String Generation

The secrets module is part of the Python Standard Library and is available in Python 3.6 and above. To generate random strings with the secrets module, we can use the secrets.choice() function to randomly select characters from a given set of characters.


# Import
import string
import secrets

alphabet = string.ascii_uppercase + string.digits
ten_random_string=''.join(secrets.choice(alphabet) for i in range(5))

print(ten_random_string)

6. random Module – Generate Random String

To generate random strings with the random module, we can use the random.choices() function to randomly select characters from a given set of characters. We can also use the random.sample() function to randomly select a subset of characters from a given set.


import random

def generate_random_string(length):
    alphabet = 'ABCDEF'
    return ''.join(random.sample(alphabet, k=length))

# Example usage:
print(generate_random_string(4)) 

# Output: "BEDA"

print(generate_random_string(2)) 

# Output: "DE"

7. Summary and Conclusion

In this article, you have learned different approaches to generating random strings from upper-case letters and digits in Python. by using the random, and secrets module. I hope this article was helpful. If you have any questions please leave them in the comment section.

Happy Coding!