Avere una funzione fix(), come funzione di supporto per una funzione di output che scrive stringhe su un file di testo.Doct coinvolge personaggi di escape
def fix(line):
"""
returns the corrected line, with all apostrophes prefixed by an escape character
>>> fix('DOUG\'S')
'DOUG\\\'S'
"""
if '\'' in line:
return line.replace('\'', '\\\'')
return line
Accensione doctests, ottengo il seguente errore:
Failed example:
fix('DOUG'S')
Exception raised:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/doctest.py", line 1254, in __run
compileflags, 1) in test.globs
File "<doctest convert.fix[0]>", line 1
fix('DOUG'S')
^
Non importa quale combinazione di \ e 's che uso, il doctest non sembra voler lavorare, anche se la funzione stessa funziona perfettamente. Avere il sospetto che sia il risultato del doctest in un commento di blocco, ma qualche consiglio per risolverlo.
Si noti che una stringa con quotatura tripla non è in realtà un commento di blocco (anche se l'ho visto usato come tale). Una stringa con quotatura tripla è solo una stringa a cui è consentito avere una nuova riga. Se usato come commento, quello che stai facendo è creare una stringa e non assegnarla a qualcosa (ad esempio creando la stringa e poi gettandola via). Python in realtà non ha un commento di blocco ... le stringhe che seguono immediatamente una definizione di funzione sono speciali e sono assegnate implicitamente all'attributo '__doc__' della funzione. – mgilson