printing backslash

Tim Chase python.list at tim.thechases.com
Wed Jun 7 19:05:01 CEST 2006


> i want to print something like this
> 
> |\|
> 
> first i tried it as string
> 
> a = "|\|"
> 
> it prints ok
> 
> but when i put it to a list
> 
> a = ["|\|"]
> 
> it gives me '|\\|' .there are 2 back slashes...i only want one.. how
> can i properly escape it?
> I have tried [r"|\|"] , [r'\\'] but they do not work...

You omit how you're printing matters.

 >>> s1 = '|\|'
 >>> s2 = r'|\|'
 >>> s3 = '|\\|'
 >>> print repr(s1), '->', s1
'|\\|' -> |\|
 >>> print repr(s2), '->', s2
'|\\|' -> |\|
 >>> print repr(s3), '->', s3
'|\\|' -> |\|

There's a difference between the repr() of a string (which 
escapes items that need to be escaped) and printing items.  All 
three *print* the item as you request it.  All three represent 
the item with the proper backslashes.

The preferred form of putting backslashes in a string is the s2 
or s3 form, as the s1 form can have some "unpredictable"(*) results:

"\|" happens not to be a recognized escape sequence
"\t" is, so you get things like
	>>> s = '\t\|'
	>>> s
	'\t\\|'
-tkc

(*) "unpredictable" defined as, "predictable, if you happen to 
have memorized the exact set of characters that do or don't need 
to beescaped"









More information about the Python-list mailing list