Skip to main content

How to Split Strings into Multiple Variables in Python

Splitting a string into multiple variables based on a delimiter is a common task in Python.

This guide demonstrates how to use the str.split() method to effectively divide a string and assign the resulting parts to separate variables, along with considerations for error handling and dealing with variable numbers of parts.

Basic String Splitting and Unpacking​

The core technique involves using str.split() to split the string and then unpacking the resulting list into individual variables:

my_str = 'tutorial reference com'
a, b, c = my_str.split(' ') # Split on spaces

print(a) # Output: tutorial
print(b) # Output: reference
print(c) # Output: com
  • my_str.split(' ') splits the string at each space, returning a list of substrings.
  • a, b, c = ... This is called unpacking. It assigns each element of the list to the corresponding variable.
  • The number of variables must match the number of elements in the list produced by split(). Otherwise, a ValueError will occur.

Using maxsplit for Limited Splits​

The maxsplit argument to split() controls the maximum number of splits:

my_str = 'tutorial reference com'
a, b = my_str.split(' ', 1) # Split only once

print(a) # Output: tutorial
print(b) # Output: reference com
  • my_str.split(' ', 1) splits the string at the first space only, resulting in a list with two elements. The rest of the string is kept together in the second element.

Handling Missing or Extra Values​

If the number of parts after splitting might not always match the number of variables, you have a few options:

Using a Default Value with *​

Use the * operator to collect "extra" values into a list:

my_str = 'tutorial reference com extra'
a, b, *rest = my_str.split()
print(a) # Output: tutorial
print(b) # Output: reference
print(rest) # Output: ['com', 'extra']

my_str = 'tutorial reference'
a, b, *rest = my_str.split()
print(a) # Output: tutorial
print(b) # Output: reference
print(rest) # Output: [] (Empty list since there are no extras)
  • a, b, *rest: a gets the first part, b gets the second, and rest gets a list of all remaining parts (which could be empty). This avoids ValueError if there are more than two parts.

Using a try-except Block​

Use a try-except block to gracefully handle potential ValueError exceptions:

my_str = 'tutorial reference com'
try:
a, b = my_str.split() # Attempt to unpack into two variables
print(a)
print(b)
except ValueError:
print("Incorrect number of values to unpack")
  • This approach catches the ValueError that occurs if there are too many or too few parts after splitting. This is crucial for robust code.

A better approach to prevent errors is to store the result of split into a list, and check if the length is correct:

my_str = 'tutorial reference com'

my_list = my_str.split(' ')

if len(my_list) == 3:
a,b,c = my_list
print(a)
print(b)
print(c)
else:
print("Incorrect number of values to unpack")

Handling Leading/Trailing Delimiters and Empty Strings​

If your string might have leading/trailing spaces (or whatever your delimiter is), split() will produce empty strings in the result:

my_str = ' tutorial reference com '
print(my_str.split(' ')) # Output: ['', 'tutorial', 'reference', 'com', '']

To remove empty strings, use filter(None, ...):

my_str = ' tutorial reference com '
parts = list(filter(None, my_str.split(' ')))
print(parts) # Output: ['tutorial', 'reference', 'com']

# Now you can unpack if the length matches
if len(parts) == 3:
a,b,c = parts
print(a) # Output: tutorial
print(b) # Output: reference
print(c) # Output: com
  • The filter removes the empty strings, and the result can be unpacked into the variables, if the length is correct.

Choosing the Right Delimiter​

split() can use any string as a delimiter. For comma-separated values:

my_str = 'tutorial,reference,com'
a, b, c = my_str.split(',') # Split on commas
print(a) # Output: tutorial
print(b) # Output: reference
print(c) # Output: com
  • The split() method takes a delimiter string as an argument, in this case the , comma character.