Open In App

Python – Divide String into Equal K chunks

Last Updated : 06 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a String perform division into K equal chunks.

Input : test_str = ‘geeksforgeek’, K = 4 
Output : [‘gee’, ‘ksf’, ‘org’, ‘eek’] 
Explanation : 12/4 = 3, length of each string extracted. 

Input : test_str = ‘geeksforgeek’, K = 1 
Output : [‘geeksforgeek’] 
Explanation : 12/1 = 12, whole string is single chunk.

Method #1: Using len() + loop

In this, we first perform task of computation of length of each chunk required from K and string length, post that,  string is splitted on desired indices to extract chunks using slicing.

Python3




# Python3 code to demonstrate working of
# Divide String into Equal K chunks
# Using len() + loop
 
# initializing strings
test_str = 'geeksforgeeks 1'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 5
 
# compute chunk length
chnk_len = len(test_str) // K
 
res = []
for idx in range(0, len(test_str), chnk_len):
     
    # appending sliced string
    res.append(test_str[idx : idx + chnk_len])
     
 
# printing result
print("The K chunked list : " + str(res))


Output

The original string is : geeksforgeeks 1
The K chunked list : ['gee', 'ksf', 'org', 'eek', 's 1']

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #2: Using list comprehension

The method similar to above, difference being that last process is encapsulated to one-liner list comprehension.

Python3




# Python3 code to demonstrate working of
# Divide String into Equal K chunks
# Using list comprehension
 
# initializing strings
test_str = 'geeksforgeeks 1'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 5
 
# compute chunk length
chnk_len = len(test_str) // K
 
# one-liner to perform the task
res = [test_str[idx : idx + chnk_len] for idx in range(0, len(test_str), chnk_len)]
 
# printing result
print("The K len chunked list : " + str(res))


Output

The original string is : geeksforgeeks 1
The K len chunked list : ['gee', 'ksf', 'org', 'eek', 's 1']

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #3: Using the string slicing technique in a loop

This solution uses a loop and string slicing to divide the string into equal chunks of length chnk_len. The for loop iterates through the string with a step size of chnk_len, and slices the string into chunks of length chnk_len. The chunks are then appended to an empty list res. Finally, the list res is printed to display the chunks.

Python3




# Python3 code to demonstrate working of
# Divide String into Equal K chunks
# Using string slicing in a loop
 
# initializing strings
test_str = 'geeksforgeeks 1'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 5
 
# compute chunk length
chnk_len = len(test_str) // K
 
# initialize an empty list to store the chunks
res = []
 
# loop through the string and slice it into chunks of length chnk_len
for i in range(0, len(test_str), chnk_len):
    res.append(test_str[i:i+chnk_len])
 
# printing result
print("The K len chunked list : " + str(res))


Output

The original string is : geeksforgeeks 1
The K len chunked list : ['gee', 'ksf', 'org', 'eek', 's 1']

Time complexity: O(n), where n is the length of the input string test_str. 
Auxiliary space: O(k), where k is the number of chunks.

Method 4: Using itertools.islice()

  1. Import the itertools module.
  2. Initialize an empty list to store the chunks.
  3. Compute the chunk length chnk_len by dividing the length of the input string by K.
  4. Use the itertools.islice() method to iterate through the input string in chunks of length chnk_len.
  5. Append each chunk to the list of chunks.
  6. If the length of the input string is not evenly divisible by K, there will be one final chunk of smaller length.
  7. Append this final chunk to the list of chunks.
  8. Return the list of chunks.

Python3




# Python3 code to demonstrate working of
# Divide String into Equal K chunks
# Using string slicing in a loop
 
# initializing strings
test_str = 'geeksforgeeks 1'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 5
 
# compute chunk length
chnk_len = len(test_str) // K
 
# initialize an empty list to store the chunks
res = []
 
# loop through the string and slice it into chunks of length chnk_len
for i in range(0, len(test_str), chnk_len):
    res.append(test_str[i:i+chnk_len])
 
# append the final chunk to the list of chunks if the length of the input string is not evenly divisible by K
if len(test_str) % K != 0:
    res.append(test_str[-(len(test_str) % chnk_len):])
 
# printing result
print("The K len chunked list : " + str(res))


Output

The original string is : geeksforgeeks 1
The K len chunked list : ['gee', 'ksf', 'org', 'eek', 's 1']

Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(k), where k is the number of chunks.

Method #5: Using regular expression

Steps:

  1. Import the re module to use the regular expression.
  2. Initialize the string and the value of K.
  3. Compute the length of each chunk.
  4. Use re.findall() to split the string into equal chunks of length chnk_len.
  5. Print the resulting list of chunks.

Python3




import re
 
# initializing strings
test_str = 'geeksforgeeks 1'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = 5
 
# compute chunk length
chnk_len = len(test_str) // K
 
# using regular expression to split the string into equal chunks
res = re.findall('.' * chnk_len, test_str)
 
# printing result
print("The K len chunked list : " + str(res))


Output

The original string is : geeksforgeeks 1
The K len chunked list : ['gee', 'ksf', 'org', 'eek', 's 1']

Time complexity: O(n), where n is the length of the input string.

Auxiliary space: O(n/K), where K is the number of equal chunks.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads