2009-11-29 33 views
0

有沒有辦法將object.__doc__作爲原始字符串,除了在源代碼中在doctring本身前添加'r'?get`object .__ doc__` as raw string

我在裏面有乳膠代碼,'\ r's',\ f等等都產生了問題。

回答

7

有沒有這樣的Python類型爲「原始字符串」 - 有原始字符串文字,這只是一個語法辦法(出許多)來指定常量(即文字)是字符串類型。因此,「獲得」某種「原始字符串」是沒有道理的。你可以將寫成 docstrings作爲原始字符串文字(即前綴r - 這正是表示原始字符串文字,這是爲Python編譯器標識這種常量的特定語法),或者將它們中的任何反斜槓加起來(指定包含反斜槓字符的常量字符串的替代方法),但這與「以某種方式獲取」無關。

2

不,您必須添加r。如果你不添加r,那麼不管你做什麼,你都無法確定返回原始字符串。

如果您不喜歡原始字符串,則另一種方法是使用額外的反斜槓在字符串中跳出反斜槓。

2

原始字符串與其他字符串之間的區別僅僅是源代碼字面量語法的問題。一旦解析,就沒有'原始'字符串對象。 repr(object.__doc__)的結果將永遠是這樣的,您可以將結果複製並粘貼到Python源腳本中並獲取原始字符串。

考慮:

>>> def foo(): 
...  'foo\nbar' 
...  pass 
... 
>>> foo.__doc__ 
'foo\nbar' 
>>> print foo.__doc__ 
foo 
bar 
>>> 
+0

不適用於'\\ d \ d' – 2009-11-29 23:20:41

+0

@Mark Byers:''\\ d \ d''包含無效的轉義序列。字符串python商店相當於'r'\ d \ d''。具體來說,當python讀取文字時,它會將第一個轉義轉換爲單個反斜槓,但第二個轉義僅保持未轉換。如果你想存儲字符串'\\ d \ d',那麼你需要使用一個原始字符串:'r'\\ d \ d''或者自己正確地轉義字符串:''\\\\ d \\ D'' – SingleNegationElimination 2009-11-30 00:39:04