0

I have the following python code

table += '<tr><td>{0}</td><td>{1}</td></tr>'% format(str(key)), 
format(str(value))
TypeError: not all arguments converted during string formatting

What could be the problem?

1

2 Answers 2

3

You are mixing three different methods of converting values to strings. To use the {..} placeholders, use the str.format() method, directly on the string literal that is the template:

table += '<tr><td>{0}</td><td>{1}</td></tr>'.format(key, value)

There's no need to use the str() or format() functions, and you don't need to use % either.

  • The format() function turns objects into a string using the format specification mini language, the same language that lets you format the values in a str.format() placeholder. It's the formatting part of the template language, available as a stand-alone function.

  • str() turns an object into a string without specific formatting. You'll always get the same result. Because str.format() already converts objects to strings (but with formatting controls) you don't need to use this. And if you need it anyway (because, say, you want to apply string formatting controls and not those of another object type), str.format() has the !s conversion option.

  • Applying % to a string object gives you a different string formatting operation called *printf-style formatting. This method is much less flexible than the str.format() version.

If your are using Python 3.6 or newer I recommend you use the faster f-string formatting string literals:

table += f'<tr><td>{key}</td><td>{value}</td></tr>'
Sign up to request clarification or add additional context in comments.

Comments

1

You have to call the .format method on the string. Just like this:

table += '<tr><td>{key}</td><td>{value}</td></tr>'.format(key=str(key), value=str(value))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.