88个字符单元格的字符串换行

2024-10-01 22:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想削减连贯字符是超过88个字符长。我需要在reportlab表单元格中换行,因此我需要额外的空白。问题是输入可以是任何东西,如果换行是有用的,那就太好了。你知道吗

我的代码是:

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()

这个太长了,分支太多了。 你有什么主意吗?你知道吗


Tags: textforlenifmaindefitemdummy
1条回答
网友
1楼 · 发布于 2024-10-01 22:29:34

Python将自动连接紧挨着“的字符串(请参见the docs,并注意raw字符串以保留反斜杠*):

text = (r'This is just a test to test the splitting '
        r'of longer a path C\:TestResults\TestCase12345'
        r'\SuiteOfTestCase2\LoggingAnything\LoggingTheLogger'
        r'\PDFLoggerFiles\Example.pdf')

或者,如果您实际使用的是多行字符串,请参见Avoiding Python multiline string indentation。你知道吗

*但它们仍然不能有一个反斜杠作为最后一个字符,请参见Why can't Python's raw string literals end with a single backslash?

相关问题 更多 >

    热门问题