On Mon, Dec 09, 2013 at 11:14:38PM +0000, J Sutar wrote: > Steven, I updated the very last line of code as below, as I need to get the > word wrapped around quotes. Is that a good way of achieving that? [...] > writer.writerow([str(n) + " " + chr(34) + s + chr(34) for n, s in > zip(numbers, words)])
Not really a good way, no. Python has two different quote characters ' and " so you can use one for delimiters and the other inside the string: s = "this string contains ' single quote" s = 'this string contains " double quote' If you need both, you can escape the one that matches the delimiter: s = 'this string contains both \' single and " double quotes' Rather than assembling the final string piece by piece using string concatenation (the + operator), it is usually better to use template strings. Python has three standard ways to do template strings: the % operator (like C's printf); the format() method; the string module's Template class. I won't talk about the Template class, as it is fairly specialised and less convenient. Compare your version: str(number) + " " + chr(34) + word + chr(34) with the formatting versions: '%d "%s"' % (number, word) '{0} "{1}"'.format(number, word) In Python 2.7, you can abbreviate that last one slightly: '{} "{}"'.format(number, word) Either should be preferred to building the string by hand with + signs. The rule of thumb I use is to say that adding two substrings together is fine, if I need more than one + sign I use a format string. So these would be okay: plural = word + "s" line = sentence + '\n' but anything more complex and I would use % or format(). -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor