Richard D. Moores wrote:

File "c:\P32Working\untitled-5.py", line 2
   return path.replace('\', '/')
                               ^
SyntaxError: EOL while scanning string literal


Others have already told you how to solve the immediate problem (namely, escape the backslash), but I'd like to talk more about general problem-solving techniques, in the principle that it is better to teach someone how to catch their own fish rather than just to feed them fish for a day.

As a programmer (amateur or profession), we *must* learn to read the error messages and glean as much information as possible. In this case, the error tells you that the line couldn't even be executed, because it doesn't compile: you get a SyntaxError.

SyntaxErrors show you where the failure occurs: look at the ^ up-arrow under the line of code. It points to the end of the line. Combine that with the error message "EOL while scanning string literal" and the cause of the error is solved: Python ran out of line before the string was closed.

(You may need to google on "EOL" to learn that it means "End Of Line".)

This of course opens more questions. Python, apparently, thinks that the closing bracket ) is inside a string, instead of outside of it. Look at the offending line and work backwards, and you should be able to see that Python sees the line as:

    return path.replace( AAA / BBB

where AAA is the string '\', ' and BBB is the broken string ')


This gives you a clue to try in the interactive interpreter. You should *expect* this to raise an exception, but it does not:

>>> s = '\', '
>>> print s
',
>>> print repr(s)
"', "



which should lead you to googling on "python backslash", which in turn leads to a mass of information. Just from the google search results themselves, I see:

  # first search result
  2. Lexical analysis — Python v2.7.2 documentation
  Python uses the 7-bit ASCII character set for program text. ... A
  backslash does not continue a token except for string literals


  # second search result
  2.4.1 String literals
  21 Feb 2008 – The backslash ( \ ) character is used to escape
  characters ...


  # third result
  Python Gotchas
  3 Jun 2008 – 2 "raw" strings and backslashes (when dealing with
  Windows filenames). ...


The first one looks a bit technical (what on earth is lexical analysis? -- look it up if you care) but the second and third look very promising. Backslash is used to escape characters, and backslashes in Windows filenames are a Gotcha.


And now you know how to catch fish :)




--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to