Printing tuple with string formatting in Python

前端 未结 14 2339
情话喂你
情话喂你 2020-11-28 03:19

So, i have this problem. I got tuple (1,2,3) which i should print with string formatting. eg.

tup = (1,2,3)
print \"this is a tuple %something\" % (tup)


        
相关标签:
14条回答
  • 2020-11-28 04:05

    Many answers given above were correct. The right way to do it is:

    >>> thetuple = (1, 2, 3)
    >>> print "this is a tuple: %s" % (thetuple,)
    this is a tuple: (1, 2, 3)
    

    However, there was a dispute over if the '%' String operator is obsolete. As many have pointed out, it is definitely not obsolete, as the '%' String operator is easier to combine a String statement with a list data.

    Example:

    >>> tup = (1,2,3)
    >>> print "First: %d, Second: %d, Third: %d" % tup
    First: 1, Second: 2, Third: 3
    

    However, using the .format() function, you will end up with a verbose statement.

    Example:

    >>> tup = (1,2,3)
    >>> print "First: %d, Second: %d, Third: %d" % tup
    >>> print 'First: {}, Second: {}, Third: {}'.format(1,2,3)
    >>> print 'First: {0[0]}, Second: {0[1]}, Third: {0[2]}'.format(tup)
    
    First: 1, Second: 2, Third: 3
    First: 1, Second: 2, Third: 3
    First: 1, Second: 2, Third: 3
    

    Further more, '%' string operator also useful for us to validate the data type such as %s, %d, %i, while .format() only support two conversion flags: '!s' and '!r'.

    0 讨论(0)
  • 2020-11-28 04:06
    >>> thetuple = (1, 2, 3)
    >>> print "this is a tuple: %s" % (thetuple,)
    this is a tuple: (1, 2, 3)
    

    Making a singleton tuple with the tuple of interest as the only item, i.e. the (thetuple,) part, is the key bit here.

    0 讨论(0)
  • 2020-11-28 04:06

    This doesn't use string formatting, but you should be able to do:

    print 'this is a tuple ', (1, 2, 3)
    

    If you really want to use string formatting:

    print 'this is a tuple %s' % str((1, 2, 3))
    # or
    print 'this is a tuple %s' % ((1, 2, 3),)
    

    Note, this assumes you are using a Python version earlier than 3.0.

    0 讨论(0)
  • 2020-11-28 04:07

    I think the best way to do this is:

    t = (1,2,3)
    
    print "This is a tuple: %s" % str(t)
    

    If you're familiar with printf style formatting, then Python supports its own version. In Python, this is done using the "%" operator applied to strings (an overload of the modulo operator), which takes any string and applies printf-style formatting to it.

    In our case, we are telling it to print "This is a tuple: ", and then adding a string "%s", and for the actual string, we're passing in a string representation of the tuple (by calling str(t)).

    If you're not familiar with printf style formatting, I highly suggest learning, since it's very standard. Most languages support it in one way or another.

    0 讨论(0)
  • 2020-11-28 04:09

    Even though this question is quite old and has many different answers, I'd still like to add the imho most "pythonic" and also readable/concise answer.

    Since the general tuple printing method is already shown correctly by Antimony, this is an addition for printing each element in a tuple separately, as Fong Kah Chun has shown correctly with the %s syntax.

    Interestingly it has been only mentioned in a comment, but using an asterisk operator to unpack the tuple yields full flexibility and readability using the str.format method when printing tuple elements separately.

    tup = (1, 2, 3)
    print('Element(s) of the tuple: One {0}, two {1}, three {2}'.format(*tup))
    

    This also avoids printing a trailing comma when printing a single-element tuple, as circumvented by Jacob CUI with replace. (Even though imho the trailing comma representation is correct if wanting to preserve the type representation when printing):

    tup = (1, )
    print('Element(s) of the tuple: One {0}'.format(*tup))
    
    0 讨论(0)
  • 2020-11-28 04:13

    Besides the methods proposed in the other answers, since Python 3.6 you can also use Literal String Interpolation (f-strings):

    >>> tup = (1,2,3)
    >>> print(f'this is a tuple {tup}')
    this is a tuple (1, 2, 3)
    
    0 讨论(0)
提交回复
热议问题