В 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
Если это не лучший способ обработки больших фрагментов текста, где вам нужны переменные пары, и есть тонна текста и специальных символов?
Ответы
Ответ 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)