# Python program to convert String to K sized Numerical Rows

• Last Updated : 08 Aug, 2022

Given a string of alphabets, convert it to K sized numerical rows, which contain the number being the positional value of characters.

Input : test_str = ‘geeksforgeek’, K = 4
Output : [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10]]
Explanation : g is at 6th position in alphabet hence g→ 6 and the string is split after every fourth character

Input : test_str = ‘geeksforgeek’, K = 3
Output : [[6, 4, 4], [10, 18, 5], [14, 17, 6], [4, 4, 10]]
Explanation : g is at 6th position in alphabet hence g→ 6 and the string is split after every third character

Method 1 : Using loop + index()

In this, we perform an iteration of each character using a loop and fetch the required position of the character in alphabets using index() on an ordered character list.

## Python3

 `# initializing string``test_str ``=` `'geeksforgeekscse'` `# printing original string``print``(``"The original string is : "` `+` `str``(test_str))` `# initializing K``K ``=` `4` `alphabs ``=` `"abcdefghijklmnopqrstuvwxyz"` `res ``=` `[]``temp ``=` `[]``for` `ele ``in` `test_str:` `    ``# finding numerical position using index()``    ``temp.append(alphabs.index(ele))` `    ``# regroup on K``    ``if` `len``(temp) ``=``=` `K:``        ``res.append(temp)``        ``temp ``=` `[]` `# appending remaining characters``if` `temp !``=` `[]:``    ``res.append(temp)` `# printing result``print``(``"Grouped and Converted String : "` `+` `str``(res))`

Output:

The original string is : geeksforgeekscse Grouped and Converted String : [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4]]

Method #2 : Using ljust() + ord() + list comprehension

In this, we perform the task of padding is required to have equal length rows using ljust(), then get numerical alphabetic positions using ord(), list comprehension with slicing helps to convert the list to K chunked Matrix.

## Python3

 `from` `math ``import` `ceil` `# initializing string``test_str ``=` `'geeksforgeekscse'` `# printing original string``print``(``"The original string is : "` `+` `str``(test_str))` `# initializing K``K ``=` `4` `# filling the rear to K size rows``temp ``=` `test_str.ljust(ceil(``len``(test_str) ``/` `K) ``*` `K)` `# convert to numerical characters``temp ``=` `[``0` `if` `char ``=``=` `' '` `else` `(``ord``(char) ``-` `97``) ``for` `char ``in` `temp]` `# slice and render to matrix``res ``=` `[temp[idx: idx ``+` `K] ``for` `idx ``in` `range``(``0``, ``len``(temp), K)]` `# printing result``print``(``"Grouped and Converted String : "` `+` `str``(res))`

Output:

The original string is : geeksforgeekscse Grouped and Converted String : [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4]]

The Time and Space Complexity for all the methods are the same:

Time Complexity: O(n)

Space Complexity: O(n)

My Personal Notes arrow_drop_up