escaping

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Apr 16 19:12:52 EDT 2012


On Mon, 16 Apr 2012 12:03:31 +0200, Kiuhnm wrote:

> On 4/16/2012 4:42, Steven D'Aprano wrote:
>> On Sun, 15 Apr 2012 23:07:36 +0200, Kiuhnm wrote:
>>
>>> This is the behavior I need:
>>>       path = path.replace('\\', '\\\\')
>>>       msg = ". {} .. '{}' .. {} .".format(a, path, b)
>>> Is there a better way?
>>
>>
>> This works for me:
>>
>>>>> a = "spam"
>>>>> b = "ham"
>>>>> path = r"C:\a\b\c\d\e.txt"
>>>>> msg = ". %s .. %r .. %s ." % (a, path, b) print msg
>> . spam .. 'C:\\a\\b\\c\\d\\e.txt' .. ham .
> 
> I like this one. Since I read somewhere that 'format' is preferred over
> '%', I was focusing on 'format' and I didn't think of '%'. Anyway, it's
> odd that 'format' doesn't offer something similar.

But it does. Before making assumptions about what format does and does 
not offer, remember that the Fine Manual is your friend.

py> print "%r" % r'C:\a\b\c\d.txt'
'C:\\a\\b\\c\\d.txt'
py> print "{0!r}".format(r'C:\a\b\c\d.txt')
'C:\\a\\b\\c\\d.txt'



-- 
Steven



More information about the Python-list mailing list