I read in a string from a GUI textbox entered by the user and process it through pandoc. The string contains latex directives for math which have backslash characters. I want to send in the string as a raw string to pandoc for processing. But something like "\theta" becomes a tab and "heta".
How can I convert a string literal that contains backslash characters to a raw string...?
Edit:
Thanks develerx, flying sheep and unutbu. But none of the solutions seem to help me. The reason is that there are other backslashed-characters which do not have any effect in python but do have a meaning in latex.
For example '\lambda'. All the methods suggested produce
\\lambda
which does not go through in latex processing -- it should remain as \lambda.
Another edit:
If i can get this work, i think i should be through. @Mark: All three methods give answers that i dont desire.
a='\nu + \lambda + \theta'; b=a.replace(r"\\",r"\\\\"); c='%r' %a; d=a.encode('string_escape'); print a u + \lambda + heta print b u + \lambda + heta print c '\nu + \\lambda + \theta' print d \nu + \\lambda + \theta
Python’s raw strings are just a way to tell the Python interpreter that it should interpret backslashes as literal slashes. If you read strings entered by the user, they are already past the point where they could have been raw. Also, user input is most likely read in literally, i.e. “raw”.
This means the interpreting happens somewhere else. But if you know that it happens, why not escape the backslashes for whatever is interpreting it?
s = s.replace("\\", "\\\\")
(Note that you can't do r"\"
as “a raw string cannot end in a single backslash”, but I could have used r"\\"
as well for the second argument.)
If that doesn’t work, your user input is for some arcane reason interpreting the backslashes, so you’ll need a way to tell it to stop that.
If you want to convert an existing string to raw string, then we can reassign that like below
s1 = "welcome\tto\tPython" raw_s1 = "%r"%s1 print(raw_s1)
Will print
welcome\tto\tPython
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With