एक फ़ंक्शन फ़िक्स(), एक आउटपुट फ़ंक्शन के लिए एक सहायक फ़ंक्शन के रूप में है जो टेक्स्ट फ़ाइल में तार लिखता है।सबसे व्यस्त एस्केपिंग अक्षर
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
doctests चालू किया जा रहा है, मैं निम्नलिखित त्रुटि मिलती है:
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')
^
कोई फर्क नहीं पड़ता \ किस संयोजन और के मैं का उपयोग करें, doctest काम करना चाहते हैं के लिए, नहीं लगता है, भले ही समारोह पूरी तरह से काम करता है। एक संदेह है कि यह ब्लॉक टिप्पणी में सबसे व्यस्त होने का परिणाम है, लेकिन इसे हल करने के लिए कोई सुझाव है।
>>> fix("Doug's")
"Doug\\'s"
ध्यान दें कि आप डबल-कोटेड तार में एकल उद्धरण से बचने के लिए की जरूरत नहीं है, और अजगर नहीं है कि:
ध्यान दें कि एक तिहाई उद्धृत स्ट्रिंग वास्तव में एक ब्लॉक-टिप्पणी नहीं है (हालांकि मैंने इसे इस तरह उपयोग किया है)। एक ट्रिपल उद्धृत स्ट्रिंग केवल एक स्ट्रिंग है जिसे इसमें एक नई लाइन रखने की अनुमति है। जब कोई टिप्पणी के रूप में उपयोग किया जाता है, तो आप वास्तव में क्या कर रहे हैं एक स्ट्रिंग बना रहा है और इसे किसी भी चीज़ को असाइन नहीं कर रहा है (उदाहरण के लिए स्ट्रिंग बनाना और फिर इसे फेंकना)। पाइथन में वास्तव में ब्लॉक-टिप्पणी नहीं होती है ... स्ट्रिंग्स जो तुरंत फ़ंक्शन परिभाषा का पालन करती हैं विशेष होती हैं और फ़ंक्शन के '__doc__' विशेषता को निहित रूप से असाइन की जाती हैं। – mgilson