Home > database >  Append to a string with characters in a while loop python
Append to a string with characters in a while loop python

Time:07-09

I'm running into a problem which I cannot solve online- all answers I've found only allow the appending to happen once since it just keeps repeating the same action.

For context: If a string isn't 128 lines long- I want to pad it out to reach 128. All padding should add 00 then move to the next line. For example:

01
01
02
03
05
06
09
01

Then with padding should become

01
01
02
03
05
06
09
01
00
00
00
00 UP TO 128 lines

Hope that explains what I need to do.

I've tried using .join and .ljust/.rjust. inside a while loop. The while loop is:

while count != 129:
     padding.join("00\n")
     count  = 1

However it only ever prints out 00. Any advice is appreciated. Thank you!

CodePudding user response:

your_string = "01\n01\n02\n03\n05\n06\n09\n01\n"
new_string =  your_string   (128 - len(your_string.split())) * "01\n"

CodePudding user response:

In order to check the number of lines you need to count the number of "\n" occurrences. Since the string seems to be a variable amount you need to be able to do this dynamically. You would have to write a function to check this.

something like this should work

def pad_string(unpadded_string, string_length =128, pad_string ='00\n'):
    """Function to ensure that a string is ``string_length`` lines.
    Do this by counting the number of new lines and appending deliminator where neccesary"""
    
    num_lines = unpadded_string.count('\n')
    if not num_lines < string_length:
        return unpadded_string
    return unpadded_string   pad_string*(string_length-num_lines)

Using this in your example:

your_string = "01\n01\n02\n03\n05\n06\n09\n01\n"


def pad_string(unpadded_string, string_length =128, pad_string ='00\n'):
    """Function to ensure that a string is ``string_length`` lines.
    Do this by counting the number of new lines and appending deliminator where neccesary"""
    
    num_lines = unpadded_string.count('\n')
    if not num_lines < string_length:
        return unpadded_string
    return unpadded_string   pad_string*(string_length-num_lines)


print(pad_string(your_string).count('\n'))
>>> 128
  • Related