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