string concatenation

Eric Brunel eric_brunel at despammed.com
Fri Jul 2 11:28:05 EDT 2004


Ajay wrote:
> hi!
> 
> i am going through a for loop and want to add the strings together
> i am doing this currently
> 
> for name in contextForm.keys():
>     context += "Input: " + name + " value: " + contextForm[name].value +
> "<BR>"
> 
> context is meant to hold all the form values in the paper.
> however the code above doesn't work

Waht do you mean by "doesn't work"? Does it crash? Does it give an unexpected 
result? If it crashes, giving us the actual error message will help a lot.

I can see at least two reasons why it may crash:

1 - the most likely: context is not initialized. E.g:

 >>> s += 'foo'
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
NameError: name 's' is not defined

You must initialize context to the empty string before trying to append anything 
to it.

2 - less likely, but worth a mention: you should prefer:

context += "Input: %s value: %s<BR>" % (name, contextForm[name].value)

to what you've written. The reason is simple: %s will translate everything into 
a string; + will not. E.g:

 >>> "bar" + 12
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
TypeError: cannot add type "int" to string

> being new to Python, i dont know whether you can do +=

Yes, you can, except if you have a very old Python version (e.g. 1.5), where += 
will raise a SyntaxError. If this is the case, either install a newer Python 
version or use:

context = context + ...

or one of the solutions other posters already gave.

HTH
-- 
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com




More information about the Python-list mailing list