Подтвердить что ты не робот

В Python у вас есть переменные в тройных кавычках? Если да, то как?

Это, наверное, очень простой вопрос для некоторых, но он меня озадачил. Можете ли вы использовать переменные в тройных кавычках python?

В следующем примере, как использовать переменные в тексте:

wash_clothes = 'tuesdays'
clean_dishes = 'never'

mystring =""" I like to wash clothes on %wash_clothes
I like to clean dishes %clean_dishes
"""

print(mystring)

Я бы хотел, чтобы это привело к:

 I like to wash clothes on tuesdays
     I like to clean dishes never

Если это не лучший способ обработки больших фрагментов текста, где вам нужны переменные пары, и есть тонна текста и специальных символов?

4b9b3361

Ответ 1

Один из способов:

>>> mystring =""" I like to wash clothes on %s
... I like to clean dishes %s
... """
>>> wash_clothes = 'tuesdays'
>>> clean_dishes = 'never'
>>> 
>>> print mystring % (wash_clothes, clean_dishes)
 I like to wash clothes on tuesdays
I like to clean dishes never

Также посмотрите на форматирование строк

Ответ 2

Предпочтительный способ сделать это - str.format(), а не использовать метод %:

Этот метод форматирования строк является новым стандартом в Python 3.0 и должен быть предпочтительнее форматирования %, описанного в операциях форматирования строк в новом коде.

Пример:

wash_clothes = 'tuesdays'
clean_dishes = 'never'

mystring =""" I like to wash clothes on {0}
I like to clean dishes {1}
"""

print mystring.format(wash_clothes, clean_dishes)

Ответ 3

Я думаю, что самый простой способ - str.format(), как говорили другие.

Однако я думал, что я бы сказал, что у Python есть класс string.Template, начинающийся с Python2.4.

Вот пример из документов.

>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'

Одной из причин, по которой мне это нравится, является использование сопоставления вместо позиционных аргументов.

Ответ 4

Да. Я считаю, что это сработает.

do_stuff = "Tuesday"

mystring = """I like to do stuff on %(tue)s""" % {'tue': do_stuff}

EDIT: забыл 's' в спецификаторе формата.

Ответ 5

Также обратите внимание, что вам не нужна промежуточная переменная:

name = "Alain"
print """
Hello %s
""" % (name)