Очистить длинную строку от пробелов и табуляции в Python - PullRequest
0 голосов
/ 08 декабря 2018

Предполагается, что для создания длинной строки, и эта строка находится в методе класса, как лучше написать код?

def printString():

    mystring = '''title\n
    {{\\usepackage}}\n
    text continues {param}
    '''.format(param='myParameter')

    return mystring

этот метод хорошо отформатирован, но последняя строкаимеет нежелательные пробелы:

a = printString()
print(a)
title

    {\usepackage}

    text continues myParameter

, в то время как этот метод дает исправленные результаты, но код может стать грязным, если строка (-ы) длинная:

def printString():

    mystring = '''title\n
{{\\usepackage}}\n
text continues {param}
    '''.format(param='myParameter')

    return mystring

a = printString()
print(a)

title

{\usepackage}

text continues myParameter

некоторые подсказки, чтобы иметь хорошийКачество кода и результаты?

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Вы можете использовать re.sub для очистки любых пробелов и табуляции в начале каждой строки

>>> import re
>>> def printString():
...     mystring = '''title\n
...     {{\\usepackage}}\n
...     text continues {param}
...     '''.format(param='myParameter')
...
...     return re.sub(r'\n[ \t]+', '\n', mystring)
... 

Это дает следующее o / p

>>> a = printString()
>>> print (a)
title

{\usepackage}

text continues myParameter
0 голосов
/ 08 декабря 2018

Попробуйте заключить нужную строку в скобки, например, так:

def printString():

    mystring = ('title\n'
                '{{\\usepackage}}\n'
                'text continues {param}').format(param='myParameter')

    return mystring

Это позволит вам разбить строку на несколько строк, в то время как c = иметь контроль над пробелами.

0 голосов
/ 08 декабря 2018

Вы можете использовать скобки для поддержания аккуратности длинных строк внутри функций.

def printString():
    mystring = ("title\n"
    "{{\\usepackage}}\n"
    "text continues {param}"
    ).format(param='myParameter')

    return (mystring)

print(printString())

Результат:

title
{\usepackage}
text continues myParameter

Вы также можете явно использовать символ + дляпредставляет конкатенацию строк, но это меняет это с операции времени компиляции на операцию времени выполнения. Источник

def printString():
    mystring = ("title\n" +
    "{{\\usepackage}}\n" +
    "text continues {param}"
    ).format(param='myParameter')

    return (mystring)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...