Borislav Hadzhiev
Last updated: Jun 24, 2022
Check out my new book
Use the str.split()
method to split a string on the backslashes, e.g.
my_list = my_str.split('\\')
. The str.split
method will split the string on
each occurrence of a backslash and will return a list containing the results.
# ✅ split string on each occurrence of backslash my_str = 'one\\two\\three\\four' my_list = my_str.split('\\') print(my_list) # 👉️ ['one', 'two', 'three', 'four'] # ✅ split string on each space or backslash my_str_2 = 'one two\\three four five' my_list_2 = my_str_2.replace('\\', ' ').split(' ') print(my_list_2) # 👉️ ['one', 'two', 'three', 'four', 'five']
The str.split() method splits the original string into a list of substrings using a delimiter.
The method takes the following 2 parameters:
Name | Description |
---|---|
separator | Split the string into substrings on each occurrence of the separator |
maxsplit | At most maxsplit splits are done (optional) |
Notice that we had to use a second backslash to escape the first.
\
character has a special meaning in Python - it is used as an escape character (e.g. \n
or \t
).By adding a second backslash, we treat the \
as a literal character.
If you have a string literal, you can also prefix it with r
to mark it as a
raw string.
my_str = r'one\two\three\four' my_list = my_str.split('\\') print(my_list) # 👉️ ['one', 'two', 'three', 'four']
r
are called raw strings and treat backslashes as literal characters.If your string starts with or ends with a backslash, you would get empty string elements in the list.
my_str = '\\one\\two\\three\\four\\' my_list = my_str.split('\\') print(my_list) # 👉️ ['', 'one', 'two', 'three', 'four', '']
You can use the filter()
function to remove any empty strings from the list.
my_str = '\\one\\two\\three\\four\\' my_list = list(filter(None, my_str.split('\\'))) print(my_list) # 👉️ ['one', 'two', 'three', 'four']
The filter function takes a function and an iterable as arguments and constructs an iterator from the elements of the iterable for which the function returns a truthy value.
None
for the function argument, all falsy elements of the iterable are removed.All values that are not truthy are considered falsy. The falsy values in Python are:
None
and False
.0
(zero) of any numeric type""
(empty string), ()
(empty tuple), []
(empty list), {}
(empty dictionary), set()
(empty set), range(0)
(empty
range).Note that the filter()
function returns a filter
object, so we have to use
the list()
class to convert the filter
object to a list.
my_str_2 = 'one two\\three four five' my_list_2 = my_str_2.replace('\\', ' ').split(' ') print(my_list_2) # 👉️ ['one', 'two', 'three', 'four', 'five']
We replaced all occurrences of a backslash with a space and split the string on each space.
You could achieve the same result by replacing each occurrence of a space with a backslash and splitting on each backslash.
my_str_2 = 'one two\\three four five' my_list_2 = my_str_2.replace(' ', '\\').split('\\') print(my_list_2) # 👉️ ['one', 'two', 'three', 'four', 'five']