View Single Post
Old Feb 28th, 2007, 12:53 PM   #2
Arevos
Programming Guru
 
Arevos's Avatar
 
Join Date: Aug 2005
Location: England
Posts: 1,499
Rep Power: 5 Arevos is on a distinguished road
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
Arevos is offline   Reply With Quote