0

I have a string in python without white space and I want python to split this string for every 3 letters so like 'antlapcap', For example would be ['ant', 'lap', 'cap'] is there any way to do this?

James K
  • 3,692
  • 1
  • 28
  • 36
Yousef Radwan
  • 33
  • 1
  • 7

3 Answers3

0

not sure if theres a more efficient way of doing it but ,try:

string = "antlapcap"
list = []
i = 0
for i in range(i,len(string)):
    word =string[i:i+3] 
    list.append(word)
    i=i+3
j = list
b =j[::3]
print(b)
jack
  • 23
  • 2
  • 10
0

Iterate over the string, adding to a string variable until it reaches a certain length, then append the string to a list. eg.

def split_at_nth(string, split_size):
    s = ''
    res = []
    for char in string:
        s += char
        if len(s) == split_size:
            res.append(s)
            s = ''
    return res

s = 'antlapcap'
print(split_at_nth(s, 3)) # prints ['ant', 'lap', 'cap']

Another option would be to use a series of list comprehensions:

def split_at_nth(string, split_size):
    res = [c for c in string]
    res = [sub for sub in zip(*[iter(res)]*3)]
    res = [''.join(tup) for tup in res]
    return res

s = 'antlapcap'
print(split_at_nth(s, 3)) # prints ['ant', 'lap', 'cap']
Christian Dean
  • 22,138
  • 7
  • 54
  • 87
0

This is a simple way to do it.

>>> a="abcdefghi"
>>> x=[]
>>> while len(a) != 0:
...  x.append(a[:3])
...  a=a[3:]
... 
>>> a
''
>>> x
['abc', 'def', 'ghi']

This simply appends to the list x the first 3 characters of the string a, then redefines a to be everything in a except the first 3 characters and so on until a is exhausted.

With a hat tip to user @vlk (Split python string every nth character?), although I have altered the while statement

Community
  • 1
  • 1
Rolf of Saxony
  • 21,661
  • 5
  • 39
  • 60