Bir metin dosyasına dizeleri yazan bir çıktı işlevine yardımcı işlev olarak bir işlev düzeltmesi() yapın. Doctestler açılmasıKaçış Karakterleri İçeren Doctest
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
, aşağıdaki hatayı alıyorum:
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')
^
olursa olsun kullandığım \ ne kombinasyonu ve 's, doctest.testmod olsa çalışmak isteyen için görünmüyor Fonksiyonun kendisi mükemmel çalışır. Bir blok yorumunda doktrininin bir sonucu olduğu, ancak bunu çözmek için herhangi bir ipucu olduğu şüphesi var. Eğer çift tırnak içindeki tek tırnak kaçmayı gerek yoktur ve Python yok olduğunu
>>> fix("Doug's")
"Doug\\'s"
Not:
Üçlü alıntı yapılan bir dizenin gerçekten bir blok yorumu olmadığını unutmayın (buna benzer şekilde kullanıldığını gördüm). Üçlü bir alıntı dizgisi sadece içinde yeni satır bulunmasına izin verilen bir dizedir. Bir yorum olarak kullanıldığında, gerçekten yaptığınız şey bir dize oluşturup onu herhangi bir şeye atamamaktır (örneğin, dizeyi oluşturmak ve sonra atmak). Python'un aslında bir blok yorumu yoktur ... bir işlev tanımını hemen takip eden dizeler özeldir ve örtük olarak işlevin '__doc__' özniteliğine atanırlar. – mgilson