Hey Dan - I am pretty sure the string methods are now attached to all strings (I think this happened at Python 2.2 or something), and string literals (which is how Python sees string fields in the Field calculator) can be appended just be listing them one after the other.
This syntax is sparse, but is beautiful, and very easy to read. LOVE PYTHON.
(!a! " " !b! " " !c!).strip() # Calculate Field
( " " " " ).strip() # Python label expresson
As Ted pointed out, this will generate an error if one of the field values are null (you can't add a string to a null) or numeric (same deal). So in that things are more complex, but still so pythonesque, using a list comprehension. Dan Patterson you gotta love this:
" ".join([str(s).strip() for s in [!a!, !b!, !c!] if s])
but what if the field has a numeric value of zero? Won't that evaluate to False and leave it out of the string? We can fix that!
" ".join([str(s).strip() for s in [!a!, !b!, !c!] if (s or s == 0)])