9
str = 'I love %s and %s, he loves %s and %s.' 

I want to use this format to display

I love apple and pitch, he loves apple and pitch.

Only add two variable please, but need a way to use it twice in one sentence.

1
  • 7
    And please don't ever call a variable str. Commented Dec 14, 2010 at 3:38

2 Answers 2

25

Use a dict:

>>> s = 'I love %(x)s and %(y)s, he loves %(x)s and %(y)s.'
>>> s % {"x" : "apples", "y" : "oranges"}
'I love apples and oranges, he loves apples and oranges.'

Or use the newer format function, which was introduced in 2.6:

>>> s = 'I love {0} and {1}, she loves {0} and {1}'
>>> s.format("apples", "oranges")
'I love apples and oranges, she loves apples and oranges'

Note: Calling a variable str would mask the built-in function str([object]).

Sign up to request clarification or add additional context in comments.

2 Comments

Is there any reason why one should use format rather than a dictionary? Or is it just a matter of personal preference?
I believe the .format spec just covers more cases. A similar question was asked here: stackoverflow.com/q/5082452/89391. My personal preference is to use % for brevity and performance and .format, if readability is improved.
6
>>> str = 'I love %(1)s and %(2)s, he loves %(1)s and %(2)s.' % {"1" : "apple", "2" : "pitch"}
>>> str
'I love apple and pitch, he loves apple and pitch.'

Of course you can use other names besides '1' and '2'. :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.