- Python String join() Method
- Syntax
- Return Value
- Basic Examples
- join() on Iterable of Size 1
- Join a List of Integers
- join() on Dictionary
- join() vs Concatenation operator +
- Преобразование списка в строку методом join
- Почему join() — метод строки, а не списка?
- Объединение списка с несколькими типами данных
- Python String join()
- Example
- Syntax of String join()
- join() Parameters
- Return Value from join()
- Example 1: Working of the join() method
- Example 2: The join() method with sets
- Example 3: The join() method with dictionaries
- Python join() – How to Combine a List into a String in Python
- join() Syntax
- How to Use join() to Combine a List into a String
- How to Combine Tuples into a String with join()
- How to Use join() with Dictionaries
- When Not to Use join()
- Iterables with elements that aren't strings
- Nested iterables
- Wrapping Up
Python String join() Method
The join() method joins all items in an iterable into a single string. Call this method on a string you want to use as a delimiter like comma, space etc.
If there are any non-string values in iterable, a TypeError will be raised.
Syntax
Parameter | Condition | Description |
iterable | Required | Any iterable (like list, tuple, dictionary etc.) whose items are strings |
Return Value
The method returns the string obtained by concatenating the items of an iterable .
Basic Examples
# Join all items in a list with comma L = ['red', 'green', 'blue'] x = ','.join(L) print(x) # Prints red,green,blue
# Join list items with space L = ['The', 'World', 'is', 'Beautiful'] x = ' '.join(L) print(x) # Prints The World is Beautiful
# Join list items with newline L = ['First Line', 'Second Line'] x = '\n'.join(L) print(x) # First Line # Second Line
A delimiter can contain multiple characters.
L = ['the beginning', 'the end', 'the beginning'] x = ' is '.join(L) print(x) # Prints the beginning is the end is the beginning
join() on Iterable of Size 1
join() method is smart enough to insert the delimiter in between the strings rather than just adding at the end of every string. So, if you pass an iterable of size 1, you won’t see the delimiter.
L = ['red'] x = ','.join(L) print(x) # Prints red
Join a List of Integers
If there are any non-string values in iterable , a TypeError will be raised.
L = [1, 2, 3, 4, 5, 6] x = ','.join(L) print(x) # Triggers TypeError: sequence item 0: expected string, int found
To avoid such exception, you need to convert each item in a list to string. The list comprehension makes this especially convenient.
L = [1, 2, 3, 4, 5, 6] x = ','.join(str(val) for val in L) print(x) # Prints 1,2,3,4,5,6
join() on Dictionary
When you use a dictionary as an iterable , all dictionary keys are joined by default.
L = 'name':'Bob', 'city':'seattle'> x = ','.join(L) print(x) # Prints city,name
To join all values, call values() method on dictionary and pass it as an iterable .
L = 'name':'Bob', 'city':'seattle'> x = ','.join(L.values()) print(x) # Prints seattle,Bob
To join all keys and values, use join() method with list comprehension.
L = 'name':'Bob', 'city':'seattle'> x = ','.join('='.join((key,val)) for (key,val) in L.items()) print(x) # Prints city=seattle,name=Bob
join() vs Concatenation operator +
Concatenation operator + is perfectly fine solution to join two strings. But if you need to join more strings, it is convenient to use join() method.
# concatenation operator x = 'aaa' + 'bbb' print(x) # Prints aaabbb # join() method x = ''.join(['aaa','bbb']) print(x) # Prints aaabbb
Преобразование списка в строку методом join
Метод join в Python отвечает за объединение списка строк с помощью определенного указателя. Часто это используется при конвертации списка в строку. Например, так можно конвертировать список букв алфавита в разделенную запятыми строку для сохранения.
Метод принимает итерируемый объект в качестве аргумента, а поскольку список отвечает этим условиям, то его вполне можно использовать. Также список должен состоять из строк. Если попробовать использовать функцию для списка с другим содержимым, то результатом будет такое сообщение: TypeError: sequence item 0: expected str instance, int found .
Посмотрим на короткий пример объединения списка для создания строки.
vowels = ["a", "e", "i", "o", "u"] vowels_str = ",".join(vowels) print("Строка гласных:", vowels_str)Этот скрипт выдаст такой результат:
Почему join() — метод строки, а не списка?
Многие часто спрашивают, почему функция join() относится к строке, а не к списку. Разве такой синтаксис не было бы проще запомнить?
Это популярный вопрос на StackOverflow, и вот простой ответ на него:
Функция join() может использоваться с любым итерируемым объектом, но результатом всегда будет строка, поэтому и есть смысл иметь ее в качестве API строки.
Объединение списка с несколькими типами данных
Посмотрим на программу, где предпринимается попытка объединить элементы списка разных типов:
Python String join()
The string join() method returns a string by joining all the elements of an iterable (list, string, tuple), separated by the given separator.
Example
text = ['Python', 'is', 'a', 'fun', 'programming', 'language']
# join elements of text with space print(' '.join(text))# Output: Python is a fun programming languageSyntax of String join()
The syntax of the join() method is:
join() Parameters
The join() method takes an iterable (objects capable of returning its members one at a time) as its parameter.
Some of the example of iterables are:
- Native data types - List, Tuple, String, Dictionary and Set.
- File objects and objects you define with an __iter__() or __getitem()__ method.
Note: The join() method provides a flexible way to create strings from iterable objects. It joins each element of an iterable (such as list, string, and tuple) by a string separator (the string on which the join() method is called) and returns the concatenated string.
Return Value from join()
The join() method returns a string created by joining the elements of an iterable by the given string separator.
If the iterable contains any non-string values, it raises the TypeError exception.
Example 1: Working of the join() method
# .join() with lists numList = ['1', '2', '3', '4'] separator = ', ' print(separator.join(numList)) # .join() with tuples numTuple = ('1', '2', '3', '4') print(separator.join(numTuple)) s1 = 'abc' s2 = '123' # each element of s2 is separated by s1 # '1'+ 'abc'+ '2'+ 'abc'+ '3' print('s1.join(s2):', s1.join(s2)) # each element of s1 is separated by s2 # 'a'+ '123'+ 'b'+ '123'+ 'b' print('s2.join(s1):', s2.join(s1))
1, 2, 3, 4 1, 2, 3, 4 s1.join(s2): 1abc2abc3 s2.join(s1): a123b123c
Example 2: The join() method with sets
# .join() with sets test = s = ', ' print(s.join(test)) test = s = '->->' print(s.join(test))
Note: A set is an unordered collection of items, so you may get different output (order is random).
Example 3: The join() method with dictionaries
# .join() with dictionaries test = s = '->' # joins the keys only print(s.join(test)) test = s = ', ' # this gives error since key isn't string print(s.join(test))
mat->that Traceback (most recent call last): File ". ", line 12, in TypeError: sequence item 0: expected str instance, int found
The join() method tries to join the keys (not values) of the dictionary with the string separator.
Note: If the key of the string is not a string, it raises the TypeError exception.
Python join() – How to Combine a List into a String in Python
Suchandra Datta
join() is one of the built-in string functions in Python that lets us create a new string from a list of string elements with a user-defined separator.
Today we'll explore join() and learn about:
- join() syntax
- how to use join() to combine a list into a string
- how to combine tuples into a string with join()
- how to use join() with dictionaries
- when not to use join()
join() Syntax
- it requires only one input argument, an iterable. An iterable is any object which supports iteration, meaning it has defined the __next__ and __iter__ methods. Examples of iterables are lists, tuples, strings, dictionaries, and sets.
- join() is a built-in string function so it requires a string to invoke it
- it returns one output value, a string formed by combining the elements in the iterable with the string invoking it, acting as a separator
How to Use join() to Combine a List into a String
We create a string consisting of a single occurrence of the | character, like this:
We can use the dir method to see what methods we have available to invoke using the s string object:
Among the various attributes and method names, we can see the join() method:
Let's create a list of strings:
country_names = ["Brazil", "Argentina", "Spain", "France"]
And now join the list elements into one string with the | as a separator:
country_names = ["Brazil", "Argentina", "Spain", "France"] s.join(country_names)
Here we see that join() returns a single string as output. The contents of the string variable invoking join() is the separator, separating the list items of the iterable country_names which forms the output. We can use any string we like as a separator like this:
s = "__WC__" s.join(country_names)
Using join() with lists of strings has lots of useful applications. For instance, we can use it to remove extra spaces between words. Suppose we have a sentence like the below where there are multiple spaces. We can use split() which will split on whitespace to create a list of words:
paragraph = "Argentina wins football world cup 2022 in a nail biting final match that led to a \ spectacular penalty shootout. Football lovers across the world hailed it as one of the most\ memorable matches." step1 = paragraph.split() print(step1)
Now we use join() using a single space to recreate the original sentence without the additional spaces in between:
How to Combine Tuples into a String with join()
Tuples are one of the built-in data types in Python which doesn't allow modifications once they're created – they're immutable. Tuples are comma separated lists of items enclosed in () like this:
t = ('quarter-final', 'semi-final', 'final')
We can combine tuple items together in the same way we were combining list items together using join() :
This is useful for cases where we need to use tuples – like storing large collections of items which need to be processed only once and then displaying the items in a comma-separated string.
How to Use join() with Dictionaries
Dictionaries are a mapping type in Python where we specify key value pairs for storage. Let's say we have this nested dictionary
We can use join() to extract a comma separated string with the keys and values like this:
column_values = ",".join(d["event"]["world cup"]["info"].keys()) row_values = ",".join(d["event"]["world cup"]["info"].values())
When Not to Use join()
join() won't work if you try to:
Let's look at some examples.
Iterables with elements that aren't strings
join() cannot be applied on sequences that contain items other than strings. So we won't be able to combine lists with numeric type elements. It would raise a TypeError like this:
names_and_numbers = ["Tom", 1234, "Harry"] ",".join(names_and_numbers)
Nested iterables
If we try to combine the values of a dictionary like this:
nested = ["Tom", "Harry", ["Jack", "Jill"]] ",".join(nested)
We'll get a TypeError, as join() is expecting a list of strings but received a list of a list of strings.
For such cases, flatten the list like this:
flatten = [ x for x in nested if isinstance(x, list)!=True] + \ [ e for each in nested for e in each if isinstance(each, list)==True]
[ x for x in nested if isinstance(x, list)!=True]
checks if each item in nested is a list. If not, it adds it to a new list. And this:
[ e for each in nested for e in each if isinstance(each, list)==True]
creates a new 1D list element for any item in nested which is a list. Now we run join() like this:
nested = ["Tom", "Harry", ["Jack", "Jill"]] flatten = [ x for x in nested if isinstance(x, list)!=True] + \ [ e for each in nested for e in each if isinstance(each, list)==True] ",".join(flatten)
Wrapping Up
In this article, we learnt how to use the join() method on iterables like lists, dictionaries, and tuples. We also learned what sort of use-cases we can apply it on and situations to watch out for where join() would not work.
I hope you enjoyed this article and wish you a very happy and rejuvenating week ahead.