stringpythonrepeat

Repeat string to certain length


What is an efficient way to repeat a string to a certain length? Eg: repeat('abc', 7) -> 'abcabca'

Here is my current code:

def repeat(string, length):
    cur, old = 1, string
    while len(string) < length:
        string += old[cur-1]
        cur = (cur+1)%len(old)
    return string

Is there a better (more pythonic) way to do this? Maybe using list comprehension?


Solution

  • def repeat_to_length(string_to_expand, length):
       return (string_to_expand * ((length/len(string_to_expand))+1))[:length]
    

    For python3:

    def repeat_to_length(string_to_expand, length):
        return (string_to_expand * (int(length/len(string_to_expand))+1))[:length]