В Python, вы можете иметь переменные в тройных кавычках? Если так, то как? - PullRequest
51 голосов
/ 07 октября 2010

Это, наверное, очень простой вопрос для некоторых, но он поставил меня в тупик. Можете ли вы использовать переменные в тройных кавычках 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

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

Ответы [ 7 ]

54 голосов
/ 07 октября 2010

Предпочтительный способ сделать это - использовать 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)
43 голосов
/ 07 октября 2010

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

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

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

8 голосов
/ 07 октября 2010

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

Однако я подумал, что упомяну, что в Python есть строка . Шаблон , начиная с Python2.4.

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

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

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

6 голосов
/ 07 октября 2010

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

do_stuff = "Tuesday"

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

РЕДАКТИРОВАТЬ: забыл 's' в спецификаторе формата.

4 голосов
/ 27 мая 2018

Да!Начиная с Python 3.6 вы можете использовать для этого строки f: они интерполированы на месте, поэтому mystring уже является требуемым выводом.

wash_clothes = 'tuesdays'
clean_dishes = 'never'

mystring = f"""I like to wash clothes on {wash_clothes}
I like to clean dishes {clean_dishes}
"""

print(mystring)
1 голос
/ 05 декабря 2014

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

name = "Alain"
print """
Hello %s
""" % (name)
0 голосов
/ 22 марта 2019

Простой способ передать несколько аргументов

wash_clothes = 'tuesdays'
clean_dishes = 'never'
a=""" I like to wash clothes on %s I like to clean dishes %s"""%(wash_clothes,clean_dishes)
print(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...