Haben Sie eine Funktion fix(), als Hilfsfunktion für eine Ausgabefunktion, die Strings in eine Textdatei schreibt.Doctest mit Escape-Zeichen
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
Einschalten Doctests, ich die folgende Fehlermeldung erhalten:
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')
^
Egal welche Kombination von \ und ‚s ich verwende, wird der doctest nicht scheinen zu wollen, arbeiten, auch wenn Die Funktion selbst funktioniert einwandfrei. Haben Sie den Verdacht, dass es ein Ergebnis des Doctests ist, der in einem Blockkommentar ist, aber irgendwelche Tipps, um dies zu beheben.
Beachten Sie, dass ein dreifacher String in Anführungszeichen nicht wirklich ein Blockkommentar ist (obwohl ich ihn als solchen gesehen habe). Eine dreifache Zeichenfolge in Anführungszeichen ist nur eine Zeichenfolge, die eine neue Zeile enthalten darf. Wenn Sie als Kommentar verwendet werden, erstellen Sie einen String und weisen ihn keinem Objekt zu (z. B. das Erstellen des Strings und das anschließende Wegwerfen). Python hat eigentlich keinen Blockkommentar ... die Strings, die unmittelbar einer Funktionsdefinition folgen, sind speziell und werden implizit dem Attribut '__doc__' der Funktion zugewiesen. – mgilson