string formatting for python 2.5

python, python-2.5

Solution

Convert the list to a tuple and pass it as the format argument:

msg_str = msg_str % tuple(params)

Example:

>>> lst = [123, 456]
>>> 'foo %d bar %d' % tuple(lst)
'foo 123 bar 456'

Note, it must be a tuple, passing the list directly won't work:

>>> 'foo %d bar %d' % lst
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not list

Problem

In older version of python, 'str' object has no attribute 'format error will be resulted if i try to format string. params consists of something like `[u'name', '12']`. How to do the following in % string formatting? ``` def str(params): ...... if params: msg_str = msg_str.format(*params) ```

Original source