Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   Python (http://www.programmingforums.org/forum43.html)
-   -   String formatting with tuples (http://www.programmingforums.org/showthread.php?t=12696)

kurt Feb 28th, 2007 11:20 AM

String formatting with tuples
 
I'm having trouble printing out tuples.

Say, I have a function "joker":

:

def joker(*args):
print "%s" %args

and I call the function with:

:

joker("dad", "dasdsad", "dasdas")
I get:

:

ERROR: not all arguments converted during string formatting
Well, putting
:

print args
would print the whole tuple, but what i'm trying to acheive is printing the tuple without the parenthesis. I'm ok with the comma.

Can get this to work. Can you guys help?

Thanks in advance.

p/s: I'm also wondering what does the red part do?
:

command="dasdasd"
args = ("dasdas","dasdas")
print(command%args)


Arevos Feb 28th, 2007 12:53 PM

String formatting in Python either uses a single variable:
:

"Hello %s" % "World"  =>  "Hello World"
Or a tuple of variables:
:

"Name: %s, age: %d" % ("Frank", 27)    =>  "Name: Frank, age: 27"
This is why you can't print out the tuple directly.

The print command uses the repr function to show a human-readable representation of the data structure. So this:
:

print (1, 2)
Is equivalent to:
:

print "%s" % repr((1, 2))
In order to get some other representation of the tuple, such as without the brackets, you need to convert it into a string. The easiest way to do this is via the join method:
:

tup = ("Hello", "World")
print ":".join(tup)    =>    Hello:World

The only problem with this is that if your tuple contains non-strings, they won't join together. So you first have to convert them, either by a generator comprehension:
:

tup = ("Hello", 1)
print ", ".join(str(x) for x in tup)    =>    Hello, 1

Or via map, which applies a function to each element:
:

tup = ("Hello", 1)
print ", ".join(map(str, tup))  =>    Hello, 1

If you want the representation of the object, use repr instead of str:
:

tup = ("Hello", 1)
print ", ".join(map(repr, tup))    =>    "Hello", 1


Dietrich Mar 1st, 2007 6:03 PM

How about something like this:
:

def joker(*args):
    for item in args:
        print "%s" % item,

joker("dad", "dasdsad", "dasdas")



All times are GMT -5. The time now is 12:45 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC