Split and join a string in Python (original) (raw)
Last Updated : 01 May, 2025
The goal here is to split a **string into smaller parts based on a delimiter and then join those parts back together with a different delimiter. **For example, given the string “Hello, how are you?”, you might want to split it by spaces to get a list of individual words and then join them back together with a different delimiter like a hyphen (-) to create a formatted string. The result would be “Hello,-how-are-you?”.
Using split() and join()
**split() function divides the string into a list of words and **join() reassembles them with a specified separator. It is highly efficient and commonly used in Python for basic string manipulations.
Python `
a = "Hello, how are you?" b = a.split() # Split by space c = "-".join(b) # Join with hyphen
print(b) print(c)
`
Output
['Hello,', 'how', 'are', 'you?'] Hello,-how-are-you?
**Explanation:
- **split() divides the string into a list of words, split by spaces by default.
- **“-“.join(b) reassembles the list into a string with hyphens between the words.
Using re.split() and ‘-‘.join()
In cases needing advanced splitting e.g., handling multiple spaces or different delimiters****, re.split()** from the re module offers more flexibility. However, it’s less efficient than split() for simple cases due to the overhead of regular expression processing.
Python `
import re a = "Hello, how are you?"
b = re.split(r'\s+', a) # Split by spaces c = "-".join(b) # Join with a hyphen
print(b) print(c)
`
Output
['Hello,', 'how', 'are', 'you?'] Hello,-how-are-you?
**Explanation:
- **re.split(r’\s+’, a) split the string by one or more spaces, providing more flexibility for advanced splitting.
- **“-“.join(b) joins the list of words with hyphens.
Using str.partition() and str.replace()
This method splits the string manually using **partition(), iterating over it to separate head and tail parts. After splitting, **replace() or manual manipulation joins the parts. While functional, it’s less efficient due to multiple iterations and extra logic.
Python `
a = "Hello, how are you?" words, rem = [], a
Split by space manually
while rem: head, _, rem = rem.partition(" ") if head: words.append(head)
c = "-".join(words) # Join with hyphen print(words) print(c)
`
Output
['Hello,', 'how', 'are', 'you?'] Hello,-how-are-you?
**Explanation:
- **partition(” “) splits the string into three parts, before the first space (head), the space itself (sep) and after the space (tail). This process repeats until the string is fully split.
- **Loop ensures all words are extracted and added to the list words.
Using str.split() with list comprehension
This method splits the string with **split() and uses a list comprehension to process or filter the list. While more compact and readable, it adds an extra step, reducing efficiency compared to using **split() and join() directly.
Python `
a = "Hello, how are you?"
Split by space
b = [word for word in a.split()]
Join with a hyphen
c = "-".join(b)
print(b) print(c)
`
Output
['Hello,', 'how', 'are', 'you?'] Hello,-how-are-you?
**Explanation:
- **[word for word in a.split()] splits a by spaces into a list of words .
- **“-“.join(b) joins the words in **b with hyphens.