LINUX.ORG.RU

[python][str] Перенос строк в коде

 


0

1

Всем привет

В ЯП C можно строки в коде разбивать, вроде

    printf("Hello folks. "
           "How are you ?");
И получим
Hello folks. How are you ?

Так вот, меня интересует, как такое сделать в Python, особенно если используется форматирование строк. Как переносить строки (объекты типа str) так, чтобы сохранять отступы ?

Можно использовать синтаксис с тройными кавычками

def f2():
    s = '''This is a multi-line
string with param1={}
and param2={}'''.format(100,200)
    return s

ss = f2()
print(ss)
Результат:
This is a multi-line
string with param1=100
and param2=200
Но код выгдядит некрасиво.

Более-менее приемлемо так:

def zz():
    s = ('line 1 param={0}; '+\
         'line 2 param={1}; '+\
         'line 3 param={2}').format(10,20,30)
    return s

ss = zz()
print(ss)
И получим
line 1 param=10; line 2 param=20; line 3 param=30
Меня интересует, какие приёмы можно ещё применить в подобных случаях

Ты не поверишь. Так же как и в СИ.

baverman ★★★
()

Катит и такой вариант

def f():
    s = ('line 1 param1={}; '
         'line 2 param2={}; '
         'line 3 param3={}'.format('a','b','c'))
    return s

ss = f()
print(ss)

#---------------------------
line 1 param1=a; line 2 param2=b; line 3 param3=c
Значит всё дело в скобках

rumly111
() автор топика

>И получим

line 1 param=10; line 2 param=20; line 3 param=30

Ну дык добавь парочку \n в строку и будет тебе как в первом случае.
Или я не понял, что нужно?

unikoid ★★★
()
Ответ на: комментарий от unikoid

Да нет, проблема не в «\n», а в том, чтобы код красиво выглядел. Последний вариант пока что самый нормальный.

rumly111
() автор топика
from textwrap import dedent
def f2():
    s = '''\
        This is a multi-line
        string with param1={}
        and param2={}'''.format(100,200)
    return dedent(s)
Yur4eg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.