On Mon, 19 Dec 2011 15:02:50 -0700, Juan Declet-Barreto wrote: > <html xmlns:v="urn:schemas-microsoft-com:vml" > xmlns:o="urn:schemas-microsoft-com:office:office" > xmlns:w="urn:schemas-microsoft-com:office:word" > xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" > xmlns="http://www.w3.org/TR/REC-html40"><head><meta > http-equiv=Content-Type content="text/html; charset=us-ascii"><meta > name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if > !mso]><style>v\:* {behavior:url(#default#VML);} o\:*
[many more lines of rubbish deleted] Please do not post HTML code (wrongly called "rich text") emails here, as the news group is text only. Extracting your actual question: > All, > > I have a Windows-style path that I need to modify so Python functions > can find it. For example, the path > "C:\Projects\Population_Pyramids\charts\test.xls" is being interpreted > as pointing to a file called "est.xls" since the "t" is being escaped by > the preceding slash as a tab. It almost certainly is not. The path does not contain a backslash t, it contains a tab. The escape occurs before the string is built. When you write s = "abc", the quotation marks are not part of the string. They are part of the string display: delimiters of the string, not part of it. Similarly, when you write s = "\t", there are no quotation marks in the string, and no backslash, and no "t". There is only a single character, tab. So the above path is identical to you writing: "C:\Projects\Population_Pyramids\charts" + ord(9) + "est.xls" To fix this, the best solution is to take advantage that Windows accepts both forward and back slashes as directory separators: "C:/Projects/Population_Pyramids/charts/test.xls" Or you can build the string from components, and use os.path.join() to build the complete string. Or you can use raw strings as described: > I know this is straightforward to handle using raw literals by prefixing > the literal with an 'r', but my path is stored in a variable. It doesn't matter whether path is stored in a variable or not. When you build a string as a literal in source code, backslashes are always escaped. If you read text from external data, like a file, they are never escaped. > My questions are: 1. How do I prevent single slashes from being escaped > in a string variable (NOT literal)? Backslashes are not interpreted especially in string variables. They are only interpreted as backslashes when in source code. Compare the difference: >>> s = "this \n is a newline" # a string literal as source code >>> print(s) this is a newline >>> s = input("Enter text with an escape:") # data read from the user Enter text with an escape:this \n is a newline >>> print(s) this \n is a newline If you are reading the paths from a config file, they will not be interpreted. If you are building the paths from components, like this: folders = ['a', 'b', 'c'] os.path.join(folders) you should get a\b\c. (I can't test this, because I am not using Windows, so I will get something different.) Or, best solution, take advantage that Windows accepts both back slashes and forward slashes in path names, and always use forward slashes. -- Steven -- http://mail.python.org/mailman/listinfo/python-list