I would like to cut coherently chars which are longer than 88 chars. I need this for line breaking in a reportlab table cell therefore I need additional whitespaces. The problem is the input can be anything and it would be great if the line breaking is useful.
My code is:
CONST = 88
def main():
text = '''This is just a test to test the splitting of longer a path C\:TestResults\TestCase12345\SuiteOfTestCase2\LoggingAnything\LoggingTheLogger\PDFLoggerFiles\Example.pdf'''
if len(text) > CONST:
splitList = text.split(' ')
for item in splitList:
if len(item)>CONST:
print searchChar(item)
def searchChar(toSplitString):
chars = ['\\', '_']#...and catch other chars
for char in chars:
if toSplitString.find(char) != -1:
splittedParts = toSplitString.split(char)
for slicedParts in splittedParts:
if len(splittedParts)>CONST:
break
return buildNewString(splittedParts, char)
print 'hard line breaking'
def buildNewString(stringParts, character):
dummy = 0
partOfTheNewString =''
newStringList = []
while dummy != len(stringParts):
partOfTheNewString += (stringParts[dummy] + character)
dummy = dummy +1
if len(partOfTheNewString) > CONST:
dummy = dummy -1
sliceIndex = len(partOfTheNewString)-(len(stringParts[dummy])+len(character))
partOfTheNewString = partOfTheNewString[:sliceIndex]
partOfTheNewString += (' ')
newStringList.append(partOfTheNewString)
partOfTheNewString = ''
if len(partOfTheNewString):
index = len(partOfTheNewString) - len(character)
newStringList.append(partOfTheNewString[:index])
back = ''.join(newStringList)
return back
if __name__ == '__main__':
main()
This is too long and too branched. Do you have an idea?